Patrik18
Patrik18

Reputation: 329

How to delete in linq?

I select one id from DB and then I want to delete row with this id:

var ado = new mydbEntities();
var selItem = listView3.SelectedItems[0];

if (selItem != null)
{
    var selId = (from t in ado.task
                 where t.t_name == selItem.Text
                 select new { t.id});

    ado.task.DeleteOnSubmit(selId);   //this command return error
}

I trying delete with DeleteOnSubmit, but I get error. How can I delete row from DB ?

Upvotes: 2

Views: 843

Answers (2)

Joachim Isaksson
Joachim Isaksson

Reputation: 180897

EDIT: Since you seem to be working with an ObjectSet, you'll need to use DeleteObject();

var sel = (from t in ado.task
           where t.t_name == selItem.Text
           select t).FirstOrDefault();

if(sel != null)
    ado.task.DeleteObject(sel);

DeleteOnSubmit() takes an entity as a parameter, not an anonymous type. This should work better;

var sel = (from t in ado.task
           where t.t_name == selItem.Text
           select t).FirstOrDefault();

if(sel != null)
    ado.task.DeleteOnSubmit(sel);

If you want to delete multiple entities, use DeleteAllOnSubmit() which takes an enumerable of entities;

var sel = from t in ado.task
          where t.t_name == selItem.Text
          select t;

ado.task.DeleteAllOnSubmit(sel);

Upvotes: 1

Denis
Denis

Reputation: 6082

var ado = new mydbEntities();
var selItem = listView3.SelectedItems[0];

if (selItem != null)
{
    var tasksToDelete =  from t in ado.task
                         where t.t_name == selItem.Text
                         select t;

    ado.task.DeleteOnSubmit(tasksToDelete);
}

Upvotes: 0

Related Questions