2010-07-06 24 views
6

Tengo una colección de cadenas. Necesito descubrir de esta colección cadenas que satisfagan alguna condición, p. esa cadena contiene A y B o C. Estos criterios son especificados por el usuario por lo que son dinámicos. En LINQ que debería ser algo como,Evaluación dinámica de las condiciones de cadena en C#

List<String> items = new List<string> { "sdsdsd", "sdsd", "abc"}; 

var query = from item in items 
      where item.Contains("a") && item.Contains("b") || item.Contains("c")       
      select item; 

Quiero hacer la condición dinámica en donde de manera que se puede trabajar para cualquier entrada por parte del usuario. ¿Es posible hacer esto en C# sin usar ninguna biblioteca externa? Tal vez usando Linq o algo más que esté incorporado en .Net framework.

Gracias, Gary

+0

@Matt Ellen - de acuerdo contigo –

Respuesta

5

Aunque no desee utilizar bibliotecas externas, hay una que es simplemente fantástica, y es PredicateBuilder. constructor predicado le permite construir un conjunto de predicados para que coincida con artículos contra, por ejemplo:

var predicate = PredicateBuilder.True<string>(); 
predicate = predicate 
    .And(p => p.Contains("a")) 
    .And(p => p.Contains("b")); 

var matches = items.Where(predicate); 
Cuestiones relacionadas