1

ID が一致する可能性がある ID フィールドを持つ 2 つの異なるタイプのオブジェクトがあります。FindAll 操作は一致しない正しいオブジェクトを返しますが、Wh​​ere 操作はすべてのオブジェクトを返します。誰かが理由を理解するのを手伝ってくれますか?

var _kenticoIDs = new HashSet<string>(_kenticoSessions.Select(p => p.AttendeeInteractiveSessionID));
var list = _aiSessionIDList.FindAll(p => !_kenticoIDs.Contains(p.SessionID));
var ienum = _aiSessionIDList.Where(p => !_kenticoIDs.Contains(p.SessionID));

編集: resultA 変数で .ToList() を実行すると、結果のリストは結果変数と同じになります。ただし、.ToList() の前に 2 つの変数 (result/resultA) を調べると、1 つには 6 つの値があり、もう 1 つには 63 の値があります。明らかな何かが欠けているように感じます。

4

2 に答える 2

5

WhereFindAllは同等ですが、実行に関してWhereは延期されますが、FindAll即時です。

出典:このSO スレッド。

于 2012-07-23T19:43:20.313 に答える
2

あなたが抱えている問題はLinqを理解することだと思います。 Where は Linq 拡張メソッドですが、FindAll は List メソッドです。Linq 式は、列挙されるか、リスト/配列に変換されるまで評価されません。

于 2012-07-23T19:43:12.163 に答える