Поделиться через


Ошибка компилятора CS1941

Обновлен: Ноябрь 2007

Сообщение об ошибке

Тип одного из выражений в предложении "предложение" неверен. Ошибка определения типа при вызове "метода".
The type of one of the expressions in the 'clause' clause is incorrect. Type inference failed in the call to 'method'.

Определение типа в выражении запроса ведется от типа элементов в источниках данных.

Исправление данной ошибки

  • Если причина возникновения ошибки не является очевидной, тщательно изучите запрос и отследите тип результата каждого предложения от источника данных до момента возникновения ошибки.

Пример

В следующем примере кода возникает ошибка CS1941, поскольку запрашивается оператор equals для сравнения int с 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;
    }
}

Метод, в котором не удается определить тип, является методом, в который переводится предложение запроса во время компиляции.

См. также

Основные понятия

Выражения запросов LINQ (Руководство по программированию в C#)

Связи типов в операциях запроса (LINQ)