したがって、iQueryables は SQL ステートメントに変換されるため、where 句に入れる可能性のあるすべてのメソッドを処理できないことがわかっています。
しかし、これは私がやろうとしていることです:
int[] alreadySelectedIds = ...
var subjects = Entities.NewInstance.Subjects.Where(x => Array.IndexOf(alreadySelectedIds, x.Id) == -1).ToList();
そして、以下のような投稿を読んで、EF5 がこれを翻訳できるはずだと安心しました。
キーが ID のリスト (または配列) に一致するエンティティを取得
する LINQ を使用して配列から Int ID をクエリする
ただし、次のエラーが発生します。
LINQ to Entities はメソッド 'Int32 IndexOf[Int32](Int32[], Int32)' メソッドを認識せず、このメソッドはストア式に変換できません。
そして、このエラーをグーグルで検索しても、あまり役に立ちません。
私も試してみました
var newSubjects = Entities.NewInstance.Subjects.Where(x => alreadySelectedIds.Contains(x.Id)).ToList();
タイプ 'System.Int32[]' の null 定数値を作成できません。このコンテキストでは、エンティティ型、列挙型、またはプリミティブ型のみがサポートされます。
と
List<int> alreadySelectedIds = ...
タイプ 'System.Collections.Generic.List`1' の null 定数値を作成できません。このコンテキストでは、エンティティ型、列挙型、またはプリミティブ型のみがサポートされます。
私は立ち往生しており、私の脳は、どんなタイプの優雅な回復の可能性も超えてどろどろになっています. 誰か私を救ってくれませんか?