2012-03-02 13 views
-2

私は2つのIEnumerable<int>オブジェクトを生成しています:IEnumerable.Exceptメソッドが何も要素を返さないのはなぜですか?

var listA = model.SelectedFormats.Select(a => a.ID); //values: 1,2,4 
var listB = basket.OrderPosition.Select(x => x.BookFormatTypeID); //values: 1,4 


var result = listA.Except(listB); 

を私はExcept方法から任意の結果を見ることができない(コンパイラが resultがあることにも表示されません)

+2

"コンパイラは結果が"でも表示されません "とはどういう意味ですか?あなたの価値は何ですか?そして結果を反復してください - オブジェクトへのLINQが遅延実行を使用することを忘れないでください。 – MrKWatkins

+0

@トニー - あなたのクエリのような音は、結果がnullになっています。 「コンパイラは、その結果であることさえ示さない」というステートメントを詳細に説明してください。 –

+0

そのコードをデバッグしているときに、 'result'の上にマウスポインタを置くと、何も表示されません。 – Tony

答えて

0

IEnumerable.Except()はしていません要素を直接返すと、IEnumerableが返され、結果を反復処理することができます。

あなたは自動的に要素を反復処理し、結果を検査することができ、リストに追加します

#if DEBUG 
    List<myResultType> result = new List<myResultType>(listA.Except(listB)); 
#else 
    var result = listA.Except(listB); 
#endif 

これに最後の行を変更することができます。

+0

デバッガで結果にマウスを乗せてそこの列挙型を展開できるはずです - @トニーはこ​​れが彼のケースでは起こっていないと言っているようです。 – MrKWatkins

関連する問題