我有一个接收
的WCF服务ObservableCollection<Pouch> colPouchDetails;
我正在尝试删除数据库中未包含在此ObservableCollection中的所有记录(基于ID列):
var deletedPouches = DB.Pouches.Except(colPouchDetails);
“抛出本地序列不能用于查询运算符的LINQ to SQL实现,但Contains()运算符除外”
如何在IQueryable或IEnumerable中获取colPouchDetails ID字段,以便我知道从原始列表中删除了什么?一旦我得到这个列表,我就可以循环删除数据库中的每条记录。
答案 0 :(得分:1)
使用Select(d => d.ID)
获取ID
的集合,并在该集合上调用Contains
,作为错误消息说明。
由于您需要colPouchDetails
中没有相应元素的所有项目,因此您必须使用Contains
否定运算符否定!
方法结果。
var deletedPouches = DB.Pouches.Where(p => !colPouchDetails.Select(d => d.ID)
.Contains(p.ID))