2017-02-15 82 views
0

我有兩個IQueryables A和B.我需要根據A和B中可用的ID選擇A中的所有列,還有更多條件適用於B列表。在這裏,我不需要從B中進行選擇。我只需要從A中進行選擇,但是基於適用於B的條件。我嘗試了下面的linq查詢,但性能方面至少需要18秒才能加載太長的數據。我試圖重構LINQ查詢,但沒有做到過濾器。下面我提供了我的代碼正在工作,但需要很長時間才能加載。根據條件比較兩個Iqueryable

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

只需忘了聯接條件添加到'Any':'&& x.LIST_NO ==米LIST_NO' –

+0

你能否提供我在哪裏添加。我試過它會拋出錯誤 –

+0

'query = query.Where(m => parts.Any(x => x.TAG ==「PART00213」&& x.STATUS ==「NEW」&& x.LIST_NO == m.LIST_NO ));' –

回答

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