2012-04-11 5 views
1

Ich versuche, einen Code zu schreiben, der in die folgenden Abfrage übersetzt werden:Wie man Liste des Gegenstandes durch Liste der ids mit BLToolkit erhält?

SELECT * FROM players WHERE Id IN (xxx) 

Mit MS-SQL und linq2sql I „enthält“ Konstruktion und das funktionierte gut genutzt. Jetzt

(für MySQL- und BLToolkit) Ich habe es auf diese Weise:

public static IList<Player> GetPlayersByIds(IList<int> ids, DbManager db) 
    { 
     return db.GetTable<Player>().Where(pl => ids.Contains(pl.Id)).ToList(); 
    } 

aber die Ausführung dieser Code gibt die folgende Fehlermeldung:

value(vfm_elita.elita_table.player.Player+<>c__DisplayClass13).ids.Contains(pl.Id)' cannot be converted to SQL.

Gibt es eine Lösung für dieses?

Wenn nein, wie kann ich eine Liste von Objekten anhand der ID-Liste abfragen?

Vielen Dank, jede Rückmeldung ist willkommen.

Antwort

0

es sieht aus wie ich im Alter von Version von BLToolkit hatte, die einen Fehler hat. Nach dem Erhalten von 4.1 (das linq2sql-Konverter vollständig neu geschrieben hat) wurde das Problem gelöst.

0

Sie können auch Enthält in BLToolkit verwenden, um die Datei überprüfen .. \ \ Unittests Linq \ Functions.cs in den BLToolkit Quellen für einige Komponententests unter Verwendung enthält

Ich denke, (ohne Prüfung), dass das Problem mit Ihnen aktuellem Code ist die Verwendung von IList nur versuchen, es mit einer Liste

public static IList<Player> GetPlayersByIds(List<int> ids, DbManager db) 
{ 
    return db.GetTable<Player>().Where(pl => ids.Contains(pl.Id)).ToList(); 
} 
+0

Ich habe eine Liste Objekttyp, wenn es wirklich ausgeführt wird, aber danke für Ihre Hilfe. – Budda

Verwandte Themen