2010-08-27 3 views
7

Wie kann ich diese Abfrage mit Nhibernate Linq erreichen?NHibernate Linq - Wie erstellt man eine WHERE-Anweisung mit IS NOT NULL

var l = session.CreateQuery("from Auswahl a where a.Returnkey is not null").List<Auswahl>(); 

Ich habe dies versucht, aber es gibt immer eine leere Liste zurück.

var l = session.Linq<Auswahl>() 
        .Where(item => !String.IsNullOrEmpty(item.Returnkey)) 
        .Select(item => item) 
        .ToList(); 

Antwort

7

Haben Sie versucht:

var l = session.Linq<Auswahl>() 
        .Where(item => item.Returnkey != null && item.Returnkey != "") 
        .Select(item => item) 
        .ToList(); 

Ich bin nicht sicher, dass String.IsNullOrEmpty Verwendung funktionieren würde, überprüft er auch zwei Bedingungen für die - wenn es NULL ist und wenn es eine leere leere Zeichenkette, wie würde das in SQL übersetzt werden? Vielleicht lohnt es sich, SQL Profiler anzusehen, um die von ihm generierte Raw-SQL-Abfrage zu sehen.

+0

danke, du hast Recht. aber vergiss nicht zu schreiben item.Returnkey! = "" sonst bekommst du nichts von oracle. die Sql produzierte sieht nun wie folgt aus: SELECT this_.ID als ID1_0_, this_.Programm als Programm1_0_, this_.Variante als Variante1_0_, this_.Returnkey als Returnkey1_0_, this_.Beschreibung als Beschrei5_1_0_ VON AUSWAHL this_ WHERE (this_.Returnkey ist nicht null und nicht (This_.Returnkey = ''/*: p0 * /)) ! Es gibt ein Leerzeichen zwischen '' :) – blindmeis

+0

Es ist, dass sich daran erinnern, für Oracle, null und die leere Zeichenfolge sind gleich. –