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);
}
精彩评论