Zusammengestellt Abfragen und „Parameter kann nicht sein Sequenzen“
-
03-07-2019 - |
Frage
Ich dachte, dass kompilierten Abfragen die gleiche Abfrage Übersetzung als Datacontext durchführen würden. Aber ich bin immer einen Laufzeitfehler, wenn ich versuche, eine Abfrage mit einem .Contains Methodenaufruf zu verwenden. Wo habe ich falsch gegangen?
//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);
}
Lösung
Dieser Artikel hat Ihre Antwort:
Abfragen mit Listenparameter kann nicht sein, vorkompilierte, weil die Übersetzung von die Abfrage von der Anzahl abhängig die Elemente in der Liste.
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow