2010-08-09 20 views
6

Ich versuche zu schreiben, eine dynamische Linq-Abfrage zu schreiben wie:Wie String.Contains in Dynamische Linq

var q = obj.Where("message.Contains('hello')"); 

ich es für

wissen arbeitet
var q = obj.Where(o => o.message.Contains('hello')); 

, aber ich bin auf der Suche nach dynamischen linq Lösung

Danke.

+0

welcher Teil muss änderbar sein? Nachricht oder "Hallo"? –

+0

Eigentlich ist "Enthält" – Zalan

Antwort

1

Ich weiß, das ist nicht das, was Sie suchen, sondern nur als ein Punkt zu beachten:

Je nachdem, wie viele verschiedene Arten von Betrieb Sie ausführen erwarten, würde ich eine switch-Anweisung erstellen, dies zu umgehen .

Als Beispiel einige Pseudo-Code eine Enumeration mit:

(Operation ist eine Enum, falls gewünscht)

private object example(OperationType optype, Object obj, String match) 
{ 
    var q; 
    switch (optype) 
     { 
     case OperationType.Contains: 
      q = obj.Where(o => o.message.Contains(match)); 
     break; 
     case OperationType.EndsWith: 
      q = obj.Where(o => o.message.EndsWith(match)); 
     break; 
     case OperationType.StartsWith: 
      q = obj.Where(o => o.message.StartsWith(match)); 
     break; 
    } 
    return q; 
} 
+0

Hallo JYelton, danke für deine Antwort. Eigentlich suche ich nach Antworten wie dem, was Mike vorgeschlagen hat. Aber Mikes Ausdruck funktioniert nicht. – Zalan

11

jetzt meine Antwort gefunden.

var q = obj.Where("message.Contains(@0)", "hello");