根据条件比较两个Iqueryables

时间:2017-02-15 19:37:59

标签: c# linq linq-to-sql linq-to-entities

我有两个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"));

1 个答案:

答案 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));