コンパイル済みクエリと“パラメーターをシーケンスにすることはできません”

StackOverflow https://stackoverflow.com/questions/813256

質問

コンパイルされたクエリは、DataContextと同じクエリ変換を実行すると考えました。それでも、.Containsメソッド呼び出しでクエリを使用しようとすると、ランタイムエラーが発生します。どこで間違ったのですか?

//private member which holds a compiled query.
Func<DataAccess.DataClasses1DataContext, List<int>, List<DataAccess.TestRecord>>
  compiledFiftyRecordQuery = System.Data.Linq.CompiledQuery.Compile
  <DataAccess.DataClasses1DataContext, List<int>, List<DataAccess.TestRecord>>
  ((dc, ids) => dc.TestRecords.Where(tr => ids.Contains(tr.ID)).ToList());

//this method calls the compiled query.
public void FiftyRecordCompiledQueryByID()
{
  List<int> IDs = GetRandomInts(50);

  //System.NotSupportedException
  //{"Parameters cannot be sequences."}

  List<DataAccess.TestRecord> results = compiledFiftyRecordQuery
    (myContext, IDs);         
}
役に立ちましたか?

解決

この記事には答えがあります:

  

リストパラメータを持つクエリは   の翻訳のためにプリコンパイル   クエリは番号に依存します   リスト内のアイテムの数。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top