从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));

然而,这给了我一个选角错误,我想知道是否有更好的方法来实现这一点?我看过类似的问题,我看到的每一个答案似乎都比实际情况更复杂,所以任何建议都很棒!

从DataContext中删除ID==ID的简单LINQ查询

您当前有一个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);
}