Ternärer Operator in der LINQ where-Klausel

8

Ich benutze linq um mehrere Tabellen zu verbinden und komplexe Abfragen zu schreiben. Hier, wenn ich '0' als irgendeinen Parameter haben werde, d.h. CategoryId , GameId , LimitVariantId , bedeutet das, dass der Benutzer "All" von der Schnittstelle ausgewählt hat.

Meine Sql-Abfrage, wenn ich Parameterwerte größer als '0' übergebe, ist:

%Vor%

Wenn ich CategoryId als 0 übergebe, lautet meine Sql-Abfrage:

%Vor%

Ich muss diese Felder also nicht in die where-Klausel aufnehmen. Dafür hatte ich folgendes LINQ geschrieben:

%Vor%

Aber das wird alle Felder aus meiner Datenbank zurückgeben. Kann mir jemand helfen, diese Abfragen in LINQ mit ternärer Bedingung zu schreiben, die die Datensätze meiner gefilterten Felder zurückgibt?

    
KomalJariwala 20.05.2013, 11:57
quelle

3 Antworten

4

Mit Linq to SQL (mit LINQ im Allgemeinen) können Sie Where Bedingungen programmgesteuert hinzufügen, wie:

%Vor%

und so weiter.

Außerdem ist es besser, "Typ-Inferenz" (mit dem var Schlüsselwort) anstelle von dynamic zu verwenden, damit Sie intellisense nicht mit dynamic

erhalten

[Bearbeiten] Der Linq to SQL-Provider gruppiert alle Where -Bedingungen bei der Übersetzung in SQL

    
polkduran 20.05.2013, 12:26
quelle
1

Sie können diese Abfrage immer noch in SQL ausführen, versuchen Sie Folgendes:

%Vor%

BEARBEITEN:

Machen Sie dasselbe für die restlichen Parameter:

%Vor%     
noobob 20.05.2013 12:08
quelle
0

Ihr Beispiel ist sehr kompliziert, aber im Wesentlichen verwenden Sie linq, um eine Abfrage zu erstellen.

%Vor%

Dann bewerten Sie, wenn alle Ihre Bedingungen angewendet werden und lassen Sie den Anbieter die Arbeit für Sie erledigen.

    
Jodrell 20.05.2013 13:28
quelle

Tags und Links