2017-02-15 22 views
0

私は2つのIQueryable AとBを持っています。私はAとBで利用可能なidに基づいてAからすべての列を選択する必要があります。ここで私はBからの選択をする必要はありません。私はAから選択する必要があるだけでBに適用される条件に基づいています。私は以下のlinqクエリを試みましたが、パフォーマンスが賢明です。 linqクエリをリファクタリングしようとしていますが、フィルタを実行できません。以下は動作していたが、ロードに時間がかかりすぎるコードを提供した。条件に基づいて2つの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

を。 LIST_NO' –

+0

あなたはどこにそれを追加するべきか教えてください。私はそれがエラー –

+0

'query = query.Where(m => parts.Any(x => xTAG ==" PART00213 "&& x.STATUS ==" NEW "&& x.LIST_NO == m.LIST_NO)をスローしようとしました。 )); ' –

答えて

0

はこのお試しください動作しませんでしたクエリ: `&& x.LIST_NO ==メートル:あなたは、単に` Any`に結合条件を追加するのを忘れ

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)); 
関連する問題