2017-11-08 8 views
1

2つの異なるエンティティをクエリする2つのlinqクエリがあります。あるエンティティにはすべての倉庫が含まれ、もう1つには必要のない倉庫が含まれます。基本的には別のLINQクエリの1つのクエリからLINQの結果を除外します

var stockEvaluation = from ib in mapicsSession.Query<ItemBalance>() 
            where //I guess it needs to be done here 
            orderby w.Description 
            group ib by w.Description 
            into g 
            select new 
            { 
             Warehouse = g.Key, 
            }; 

var sysproWarehouses = from i in sysproSession.Query<InvWarehouse>() 
          group i by i.Warehouse 
          into g 
          select new 
          { 
           g.Key 
          }; 

は、これは私が必要なのですか、私はすべての倉庫を取得するクエリです:

は、私は必要としないすべての倉庫を取得するには、このクエリを使用します2番目のクエリから最初のクエリ結果を除外するだけです。これは簡単な質問ですが、お詫び申し上げますが、初心者です...ありがとう!

+3

「例外」機能を見てください。それはまさにあなたが望むものです。 – cramopy

+1

ここでは!sysproWarehouses.Any(あなたのテストはここにあります)または何の暴言がありましたか – Kell

+0

また、あなたの既存のクエリに 'where'句を追加して、'!sysproWarehouses.Contains() '関数をチェックすることができます。 – cramopy

答えて

2

を参照してくださいLINQメソッドを使用することができ、あなたが何ができるかです:今

var sysproWarehouses = from i in sysproSession.Query<InvWarehouse>() 
          group i by i.Warehouse 
          into g 
          select new 
          { 
           g.Key 
          }; 

var stockEvaluation = from ib in mapicsSession.Query<ItemBalance>() 
         orderby w.Description 
         group ib by w.Description 
         into g 
         select new 
         { 
          g.Key, 
         }; 

、stockEvaluationリストからsysproWarehousesリスト項目を除外する:

var result = stockEvaluation.Except(sysproWarehouses); 

注:結果に除外項目が含まれています

+0

このソリューションは、@cramopyの提案に基づいています。 – Saadi

+0

私はこのエラー= ''文字列'には定義が含まれておらず、最良の拡張メソッドオーバーロードにはタイプ'のレシーバが必要です。私はディレクティブなどを使用していませんか? Except()メソッドを使用することはできないようです –

+0

両方のリストに同じタイプを使用する必要があります。キーだけを返すようにselect文を編集しました。 私は自分の答えを更新しました。それを見てください。ありがとう! – Saadi

0

私はあなたの二つのリストが異なるテーブルから来て、あなたが、SelectからExceptが、後呼び出しを必要とします。このような何か:

var stockEvaluation = (from ib in mapicsSession.Query<ItemBalance>() 
         orderby w.Description 
         group ib by w.Description 
         into g 
         select new 
         { 
          g.Key, 
         }).Except(sysproWarehouses); 

は、私はまた、あなたの最初のクエリからのタイプに合わせて匿名型内唯一のメンバーを変更したことに注意してください。

+0

SQL? –

+0

次のエラーが発生しました@HimBromBeere: ''string'には定義が含まれておらず、最適な拡張メソッドオーバーロードにはタイプ' –

関連する問題