2012-03-26 8 views
1

Hallo Ist es möglich, in nhibernate zu createCriteria expression.in mit String von csv, zum BeispielNhibernate Kriterien expression.in mit String von csv

public static List<T> ToList(string csvOnly) 
    { 
     ISession session = NhSessionMenager.Instance.GetSession(); 
     List<T> l = session.CreateCriteria(typeof(T)).Add(Expression.In("Id",csvOnly)).List<T>().ToList(); 
     return l; 
    } 

und die Zeichenfolge wird sein: „1,2,3, 4,5,6,7,8 "?

Antwort

2

Sie können wahrscheinlich string.split verwenden, um diese in ein Array aufzuteilen. Ich glaube nicht, dass Expression.In eine durch Kommas getrennte Zeichenfolge verwendet.

string [] split = csvOnly.Split(new Char [] {','}); 
List<T> l = session.CreateCriteria(typeof(T)).Add(Expression.In("Id",split)).List<T>().ToList(); 
+0

Diese Option hat eine geringe Leistung auf Daten speichern, wenn Sie es in Zeichenfolge geben 1000rows;) – Endiss

+1

Ich würde an dieser Stelle über die SQL-Abfrage mehr besorgt sein, dann würde ich über die Leistung sein, ein 'string.split' tun –

+0

Bei einigen Datenbank-Engines ist die Anzahl der Abfrageparameter begrenzt. In SQL Server ist es etwas um 2000. Wir hatten bereits dieses Problem. – Tobias

Verwandte Themen