Kann eine Zeichenfolge für einen LINQ-Abfrageausdruck verwendet werden?

7

Ich muss einige Datensätze extrahieren, wenn einige Variablen einige Werte haben.

Zum Beispiel, wenn Status & gt; 0 Ich muss Ergebnis filtern wie:

%Vor%

sonst, wenn status = 0, muss ich diese where-Klauseln entfernen und alle Elemente zurückgeben. Ich werde loswerden:

%Vor%

zu viel Code, weil die zu überprüfenden Variablen mehr als 4-5 sein könnten.

Ist es möglich, eine Art String auf LINQ zu "injizieren"? (So ​​kann ich meine Zeichenfolge erstellen und an die LINQ übergeben).

Ich meine etwas wie:

%Vor%

ist es möglich? (Klassisches mysql-Verhalten).

    
markzzz 27.07.2011, 15:37
quelle

9 Antworten

8

Da LINQ faul ist, können Sie einfach

tun %Vor%     
hammar 27.07.2011, 15:41
quelle
3

Sie können eine Abfrage wie folgt erstellen:

%Vor%

Hilft das?

    
Chris Snowden 27.07.2011 15:43
quelle
3

Es ist möglich, Dynamic LINQ zu verwenden, siehe ScottGu's Blogpost: Dynamic LINQ (Teil 1: Verwenden der LINQ Dynamic Query Library)

    
sll 27.07.2011 15:43
quelle
2

Du könntest es so machen:

%Vor%

Linq (to sql und EF) ist schlau genug, die where-Bedingungen zusammenzuführen und eine SQL-Anweisung an die Datenbank zu senden.

    
GvS 27.07.2011 15:43
quelle
1

Es ist möglich, dynamic linq zu verwenden - siehe So erstellen Sie eine LINQ-Abfrage von der Schnur?

Meine Antwort enthält Links zu den Beiträgen von Scott Gu und dem Beispielcode von Microsoft - Ссылка

    
Stuart 27.07.2011 15:42
quelle
1

AFAIK, Sie müssen zwei verschiedene Abfragen haben.

%Vor%     
Vinay 27.07.2011 15:44
quelle
1

Eine andere Option: query.Where(x=>(status>0? x.id==status : 1==1))

    
a1ex07 27.07.2011 15:46
quelle
1

Versuchen Sie, eine bedingte LINQ-Abfrage auszuführen? Wenn ja, könnte das helfen

%Vor%     
Bobby Borszich 27.07.2011 15:48
quelle
1

Sie können Folgendes schreiben:

%Vor%

Wenn Sie jedoch alle Entitäten abfragen möchten, können Sie sie anschließend mit LINQ to SQL

filtern     
Vasea 27.07.2011 15:43
quelle

Tags und Links