从DataContext中删除ID==ID的简单LINQ查询
本文关键字:ID 简单 LINQ 查询 DataContext 删除 | 更新日期: 2023-09-27 18:00:49
我正在我的代码库中获取数据库表中一个条目的ID,并试图找到一个简单的LINQ查询来根据ID删除该条目。
这是我所拥有的:
DataContext.Items.DeleteObject((Item)DataContext.Items.Where(item => item.ItemId == selectedId));
然而,这给了我一个选角错误,我想知道是否有更好的方法来实现这一点?我看过类似的问题,我看到的每一个答案似乎都比实际情况更复杂,所以任何建议都很棒!
您当前有一个IQueryable<Item>
,而不是和项目-使用Single()
来获取项目本身:
var item = DataContext.Items.Where(item => item.ItemId == selectedId).Single();
DataContext.Items.DeleteObject(item);
这假设只有一个匹配的项目(ID作为主键(,否则考虑使用FirstOrDefault()
的First()
进行null检查,或者如果您有一个项目集合,只需在循环中删除它们:
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());
不要忘记防止出现错误,您需要确保您检查的id是实际的Item
。像这样的东西,例如:
var item = (Item)DataContext.Items.Where(item => item.ItemId == selectedId).FirstOrDefault();
if (item != null) {
DataContext.Items.DeleteObject(item);
}