开发者

Simple LINQ query to Delete From DataContext Where ID == ID

I am getting the ID of an entry in a database table in my codebehind, and am trying to find a simple LINQ query to delete the entry based on the ID.

Here is what I have:

DataContext.Items.DeleteObject((Item)DataContext.Items.Where(item => item.ItemId == selectedId));

This gives me a casting error however, and I am wondering if there is a better way to accomplish this? I've looked at similar questions and every answer I see seems to be more complicated than this shoul开发者_如何转开发d actually be, so any suggestions would be great!


You currently have an IQueryable<Item>, not and Item - use Single() to get the item itself:

var item = DataContext.Items.Where(item => item.ItemId == selectedId).Single();
DataContext.Items.DeleteObject(item);

This assumes a single matching item (ID as primary key), otherwise consider using First() of FirstOrDefault() with a null check instead or if you have a collection of item, just delete them in a loop:

var items = DataContext.Items.Where(item => item.ItemId == selectedId);
foreach(var item in items)
  DataContext.Items.DeleteObject(item);


DataContext.Items.DeleteObject((Item)DataContext.Items.Where(item => item.ItemId == selectedId).First());

Don't forget to prevent error you'll need to ensure that the id you're checking on is of an actual Item. Something like this, for example:

var item = (Item)DataContext.Items.Where(item => item.ItemId == selectedId).FirstOrDefault();

if (item != null) {
    DataContext.Items.DeleteObject(item);
}
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜