supongamos que tengo una forma particular de decidir si algunas cadenas "coincidencia", así:¿Cómo permanecer seco mientras usa LINQ para Entidades y métodos auxiliares?
public bool stringsMatch(string searchFor, string searchIn)
{
if (string.IsNullOrEmpty(searchFor))
{
return true;
}
return searchIn != null &&
(searchIn.Trim().ToLower().StartsWith(searchFor.Trim().ToLower()) ||
searchIn.Contains(" " + searchFor));
}
me gustaría tirar de partidos fuera de una base de datos utilizando LINQ a las entidades y esta ayuda. Sin embargo, cuando intento esto:
IQueryable<Blah> blahs = query.Where(b => stringsMatch(searchText, b.Name);
consigo "LINQ a Entidades no reconoce el método ..."
Si me re-escribir el código como:
IQueryable<Blah> blahs = query.Where(b =>
string.IsNullOrEmpty(searchText) ||
(b.Name != null &&
(b.Name.Trim().ToLower().StartsWith(searchText.Trim().ToLower()) ||
b.Name.Contains(" " + searchText)));
Qué es lógicamente equivalente, entonces las cosas funcionan bien. El problema es que el código no es tan legible, y tengo que volver a escribirlo para cada entidad diferente que quiera emparejar.
Por lo que puedo decir por preguntas como this one, lo que quiero hacer es imposible en este momento, pero espero que me esté perdiendo algo, ¿o sí?
try [Predicate Builder] (http://www.albahari.com/nutshell/predicatebuilder.aspx) – Eranga