我有两个IQueryables A和B.我需要根据A和B中可用的id选择A中的所有列,并且还有更多条件适用于B列表。在这里我不需要从B中选择我只需要从A中选择但是基于适用于B的条件。我尝试了下面的linq查询但是性能明智,至少需要18秒来加载太长的数据。我正在尝试重构linq查询但是没有做过滤器。下面我提供的代码工作正常,但加载时间太长。
IQueryable<A_LIST> query = ctx.getA();
IQueryable<B_List> parts = ctx.getB();
query = (from q in query
join s in parts
on q.LIST_NO equals s.LIST_NO
where s.TAG == "PART00213" && s.STATUS == "NEW"
select q).Distinct();
查询不起作用
query = query.Where(m => parts.Any(x => x.TAG == "PART00213" &&
&& STATUS == "NEW"));
答案 0 :(得分:0)
试试这个:
IQueryable<A_LIST> query = ctx.getA();
var partsIds = ctx.getB().Where(s=>s.TAG == "PART00213" && s.STATUS == "NEW").Select(s=>s.LIST_NO);
query = query.Where(q=>partsIds.Contains(q.LIST_NO));