因此,我有 2 个IQueryable<Array>
具有通用字符串类型的查询;我想使用第二个查询来删除第一个使用公共类型的所有记录,只留下第一个查询的结果未找到的记录。不太清楚该怎么做。
问问题
101 次
1 回答
2
最容易理解的方法是使用以下方法过滤 ListA 中的项目Where()
:
IQueryable<LISTA> as = db.ListA.Where(x => x.Active);
IQueryable<LISTB> bs = db.ListB.Where(x => x.HadReview);
as = as.Where(a => bs.Any(b => a.LogginID == b.LogginID) == false);
一种可能更有效的方法是使用Group Join:
var as = from a in db.ListA.Where(x => x.Active)
join b in db.ListB.Where(x => x.HadReview)
on a.LogginID equals b.LogginID into bs
where bs.Any() == false
select a;
编辑:如果你有两个不同的 DataContexts 以上将不起作用。这有可能:
IQueryable<LISTA> as = db1.ListA.Where(x => x.Active);
IQueryable<LISTB> bs = db2.ListB.Where(x => x.HadReview);
as = as.Where(a => bs.Select(b => b.LogginID).Contains(a.LogginID) == false);
于 2012-11-25T03:00:59.363 回答