Tengo un elemento de clase como
public class Item
{
public int Id {get;set;}
public string Name {get;set;}
public string PartialDescription {get;set;}
public string FullDescription {get;set;}
public doulbe Price {get;set;}
}
Me gustaría tener un método de consulta personalizado dinámico SearchOverAnyFields () que pueda aceptar cualquier número de propiedades del objeto Item como:
// key is an input string variable
// one query
var results = myItems.SearchOverAnyFields(x => x.Name.Contains(key) || x.PartialDescription.Contains(key) || x.Price.ToString().Contains(key));
// or another query
var results2 = myItems.SearchOverAnyFields(x => x.Name.Contains(key) || x.PartialDescription.Contains(key) || x.Price.ToString().Contains(key)
|| x.FullDescription.Contains(key));
// or another query
var results3 = myItems.SearchOverAnyFields(x => x.PartialDescription.Contains(key) || x.FullDescription.Contains(key));
Por favor ayuda.
No estoy realmente seguro de lo que está buscando aquí: la funcionalidad que desea se puede lograr fácilmente con el operador Where
.
var results = myItems.Where(x => x.Name.Contains(key) ||
x.PartialDescription.Contains(key) || x.Price.ToString().Contains(key));
// or another query
var results2 = myItems.Where(x => x.Name.Contains(key) ||
x.PartialDescription.Contains(key) || x.Price.ToString().Contains(key)
|| x.FullDescription.Contains(key));
// or another query
var results3 = myItems.Where(x => x.PartialDescription.Contains(key) ||
x.FullDescription.Contains(key));
¿Cumple esto con sus requisitos?