Error del compilador CS1941

Actualización: noviembre 2007

Mensaje de error

El tipo de una de las expresiones de la cláusula 'cláusula' es incorrecto. No se pudo inferir el tipo en la llamada a 'método'.
The type of one of the expressions in the 'clause' clause is incorrect. Type inference failed in the call to 'method'.

La inferencia de tipo en las expresiones de consulta se deriva del tipo de los elementos en los orígenes de datos.

Para corregir este error

  • Si no está claro por qué se produce el error, examine detenidamente la consulta y localice el tipo del resultado de cada cláusula desde el origen de datos hasta el punto en el que se produce el error.

Ejemplo

El código siguiente genera el error CS1941 porque se solicita al operador equals que compare el elemento int con uno string.

// cs1941.cs
using System.Collections;
using System.Linq;
class Test
{
    static int Main()
    {
        var nums = new[] { 1, 2, 3, 4, 5, 6 };
        var words = new string[] { "lake", "mountain", "sky" };
        IEnumerable e = from n in nums
                        join w in words on n equals w // CS1941
                        select w;
        return 0;
    }
}

El método en el que se produce un error de la inferencia de tipos es aquel al que se convierte la cláusula de consulta en tiempo de compilación.

Vea también

Conceptos

Expresiones de consultas con LINQ (Guía de programación de C#)

Relaciones entre tipos en operaciones de consulta (LINQ)