No olvides que en la informática un problema casi siempere suele tener más de una resoluciones, de igual modo nosotros aquí te enseñaremos lo más óptimo y mejor.
Solución:
customers.Where(c => c.Name.Contains("john"));
Si tiene como objetivo LINQ to SQL, use SqlMethods.Like:
customers.Where(c => SqlMethods.Like(c.Name, "%john%"));
Explicación:
El compilador generará un árbol de expresión a partir de la declaración anterior. Ya que LIKE
es una construcción específica de SQL y no común a todos los proveedores de consultas LINQ, el SqlMethods
La clase y sus miembros se utilizan como “sugerencia” para que el compilador de expresiones (compila árboles de expresión en SQL) emita un LIKE
declaración.
El primer pensamiento que viene a la mente es Regex.IsMatch
.
Esto se acercaría más a proporcionar el tipo de funcionalidad que obtiene de LIKE
; por ejemplo, con él podrías hacer esto:
var matches = people.Where(p => Regex.IsMatch(p.Name, "A.*[mn]"));
foreach (Person match in matches)
Console.WriteLine(match.Name);
Y obtener una salida como esta:
Adam Aaron Aidan
Yendo con string.Contains
como han sugerido otros, es casi seguro que es preferible si su intención es simplemente buscar una subcadena específica dentro de Name
.
Puntuaciones y comentarios
Agradecemos que desees añadir valor a nuestra información dando tu veteranía en las observaciones.