2010-08-09 12 views
6

Sto cercando di scrivere una query LINQ dinamico come:Come scrivere String.Contains nella dinamica LINQ

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

so che funziona per

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

ma sto cercando dinamica LINQ soluzione

Grazie.

+0

quale parte deve essere modificabile? messaggio o "ciao"? –

+0

Attualmente "Contiene" – Zalan

risposta

1

So che questo non è quello che stai cercando, ma solo come un punto da considerare:

seconda del numero di diversi tipi d'azione che ci si aspetta da eseguire, vorrei creare un'istruzione switch per gestire questo .

A titolo di esempio, alcuni pseudocodice utilizzando un enum:

(OperationType è un Enum se lo si desidera)

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

Ciao JYelton, grazie per la tua risposta. In realtà sto cercando delle risposte come quelle che ha proposto Mike. Ma l'espressione di Mike non funziona. – Zalan

11

Trovato la mia risposta ora.

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