2011-07-28 8 views
7

Tengo un objeto con un parámetro de cadena-escrito llamado 'baan_cat_fam_code'. El código siguiente es mi intento de encontrar todos los elementos de la consulta que tienen un baan_cat_fam_code que existe en una lista de cadenas genérica llamada catFamCd.LINQ Cualquier) argumento (en comparación con el tipo de datos de parámetros emite

query = query.Where(r => r.baan_cat_family_code.Any(s => catFamCode.Contains(s))); 

El problema es que esto no se compilará - Me aparece un error que indica

"Argument type 'char' is not assignable to parameter type 'string'" 

por alguna razón el predicado s se escribe como char. Así añado .ToString() al argumento de los .Contains método. Sin embargo, cuando se ejecuta el código, obtengo la siguiente excepción cuando el resultado de la consulta está vinculado a un cuadro de lista.

"The argument 'value' was the wrong type. Expected 'System.Char'. Actual 'System.String'." 

Esto me tiene rascándome la cabeza. Cualquier ayuda sería muy apreciada.

Gracias!

Respuesta

13

El problema con el que se está encontrando es que baan_cat_family_code es del tipo string que implementa IEnumerable<char>. Cuando se llama a Any está esencialmente diciendo

  • es el predicado cierto para cualquier char en este string

Lo que realmente quiere estar preguntando, aunque es

  • Es este string en la lista catFamCode

Pruebe lo siguiente, que hace esto último

query = query.Where(r => catFamCode.Contains(r.baan_cat_family_code)); 
2

Estás llamando Any() en una cadena que mira a sus elementos que son chars, de ahí el error.

que debería haber hecho:

query = query.Where(r => catFamCode.Contains(r.baan_cat_family_code)); 
Cuestiones relacionadas