2011-11-22 14 views
6

Al utilizar Contains con Dynamic Linq en Linq-to-objects, la búsqueda distingue entre mayúsculas y minúsculas. Me gustaría poder buscar mayúsculas y minúsculas (como Linq-to-sql, porque SQL Server lo hace de forma predeterminada).Insensible a mayúsculas y minúsculas Contiene con Dynamic Linq

Algo así como:

this.someQuery = this.someQuery.Where(field + ".Contains(@0, true)", strValue); 

donde true significa: caseinsensitive = true, como una de las extensiones de System.String.Contains proporciona. Aunque no puedo usar extensiones a System.String con Linq dinámico por defecto.

+0

Parece que 'this.someQuery = this.someQuery.Where (field + "ToLower(). Contiene (@ 0, true)", strValue.ToLower());' trabajos. Realicé algunos cambios en Dynamic.cs, por lo que no sé si funciona de manera predeterminada. –

+0

posible duplicado de [LINQ contiene insensible a mayúsculas y minúsculas] (http://stackoverflow.com/questions/3360772/linq-contains-case-insensitive) – Sjoerd

+0

No es un duplicado porque no se trata de dynamic linq. –

Respuesta

13

¿Puedes simplemente .ToLower() ambos lados de la comparación? Algo como esto:

this.someQuery = this.someQuery.Where(field.ToLower().Contains(strValue.ToLower())); 

¿O no entiendo lo que está buscando?

+0

ToLower() no es compatible con Dynamic Linq –

+1

Seré d * mned ... Intenté esto y funcionó, lo que ayer obviamente no funcionó: this.someQuery = this.someQuery.Where (field + "ToLower () .Contains (@ 0, true) ", strValue.ToLower()); –

+0

No puedo creer que haya sido así de simple. Sé que lo intenté ayer, pero probablemente cometí un error tipográfico o algo así. ¡Bien gracias por su sugerencia! –

Cuestiones relacionadas