2010-08-09 7 views
6

Estoy intentando escribir una consulta LINQ dinámica como:Cómo escribir String.Contains en LINQ dinámica

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

sé que funciona para

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

pero yo estoy buscando dinámico solución linq

Gracias.

+0

¿Qué pieza necesita ser cambiada? mensaje o "hola"? –

+0

En realidad es "contiene" – Zalan

Respuesta

1

Sé que esto no es lo que busca, pero sólo como un punto a considerar:

Dependiendo del número de diversos tipos de medidas que tengan previsto realizar, me gustaría crear una sentencia switch para manejar esto .

Como un ejemplo, algunos pseudocódigo utilizando una enumeración:

(OperationType es un Enum si se desea)

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

Hola JYelton, gracias por tu respuesta. En realidad, estoy buscando algunas respuestas como las que Mike propuso. Pero la expresión de Mike no funciona. – Zalan

11

encontrado mi respuesta ahora.

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