我在代码隐藏中获取数据库表中条目的 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 作为主键),否则请考虑使用
First()
的 FirstOrDefault()
进行空检查,或者如果您有项目集合,只需在循环中删除它们:
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);
}