所以我有2个IQueryable<Array>
查询,使用常见的字符串类型;我想使用第二个查询在第一个查询中使用公共类型删除所有记录,只留下未找到的记录作为第一个查询的结果。不太清楚该怎么做。
答案 0 :(得分:1)
最容易理解的方法是使用Where()
过滤掉ListA中的项目:
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);
另请参阅:Linq to SQL - How to inner join tables from different Data Context?