Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 根据条件比较两个iQueryTables_C#_Linq_Linq To Sql_Linq To Entities - Fatal编程技术网

C# 根据条件比较两个iQueryTables

C# 根据条件比较两个iQueryTables,c#,linq,linq-to-sql,linq-to-entities,C#,Linq,Linq To Sql,Linq To Entities,我有两个iQueryTables A和B。我需要根据A和B中可用的id从A中选择所有列,并且在B列表中应用更多条件。在这里,我不需要从B中选择,我只需要从a中选择,但基于B上应用的条件。我尝试了下面的linq查询,但从性能角度看,加载数据至少需要18秒,这太长了。我正在尝试重构linq查询,但未能进行筛选。下面我提供了我的代码,该代码正在运行,但加载时间太长 IQueryable<A_LIST> query = ctx.getA(); IQueryable<B_List>

我有两个iQueryTables 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();
试试这个:

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));
IQueryable query=ctx.getA();
var partsIds=ctx.getB()。其中(s=>s.TAG==“PART00213”&&s.STATUS==“NEW”)。选择(s=>s.LIST\u NO);
query=query.Where(q=>partsIds.Contains(q.LIST_NO));

您只是忘记将连接条件添加到
任何
和&x.LIST\u NO==m.LIST\u NO
您能告诉我在哪里添加该条件吗。我尝试过它抛出错误
query=query.Where(m=>parts.Any(x=>x.TAG==“PART00213”&&x.STATUS==“NEW”&&x.LIST\u NO==m.LIST\u NO))谢谢,成功了!
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));