Hola quiero crear una lista basada en la cadena de búsqueda utilizando expresiones de predicado.Cómo crear un predicado de forma dinámica
Tengo una lista de tipo de productos que contiene diferentes nombres.
List<products> list1 = new List<products>();
list1.Add(new products("sowmya"));
list1.Add(new products("Jane"));
list1.Add(new products("John"));
list1.Add(new products("kumar"));
list1.Add(new products("ramya"));
listBox1.ItemsSource = list1;
ahora quiero filtrar el contenido en función del usuario input.User entrará n ninguna de las cadenas con '+' como separador. Después de recibir las cuerdas pasaré a predicado objeto como éste
private void textBox1_KeyDown(object sender, KeyEventArgs e)
{
List<products> list2 = new List<products>();
Expression<Func<products, bool>> predicate = PredicateBuilder.True<products>();
if (e.Key == Key.Enter)
{
string Searchstring = textBox1.Text.ToString().Trim();
string[] separator = new string[] { "+" };
string[] SearchItems=Searchstring.Split(separator,StringSplitOptions.None);
foreach (string str in SearchItems)
{
string temp = str;
predicate =p => p.Name.Contains(temp.ToLower());
}
list2 = list1.AsQueryable().Where(predicate).ToList();
listBox1.ItemsSource = list2;
}
}
si entro en más de una cadena (sowmya + Jane + john) su dando sólo la última cadena resultado (John), pero quiero una lista de todas las cadenas coincidentes
Responda esta pregunta porque estoy intentando esto pero no pude obtener el resultado.
Por favor, ayuda un poco gracias.
dup: http://stackoverflow.com/questions/845059/how-do-i-dynamically-create-an-expressionfuncmyclass-bool-predicate –