Невозможно преобразовать лямбда-выражение для ввода "string", потому что это не тип делегата

Я использую выражение lambda LINQ следующим образом:

int Value = 1;
qryContent objContentLine;

using (Entities db = new Entities())
{
    objContentLine = (from q in db.qryContents
                      where q.LineID == Value
                      orderby q.RowID descending
                      select q).FirstOrDefault();
}

Однако я получаю следующую ошибку:

Невозможно преобразовать лямбда-выражение для ввода 'string', потому что это не тип делегата

Ответ 1

Я думаю, что в этом системном классе отсутствует using System.Linq;.

а также добавить System.Data.Entity; в код

Ответ 2

В моем случае мне пришлось добавить using System.Data.Entity;

Ответ 3

В моем случае он решил использовать

@Html.DropDownList(model => model.TypeId ...)  

используя

@Html.DropDownListFor(model => model.TypeId ...) 

решит его

Ответ 4

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

Посмотрите на список ошибок компилятора VS: Например, если переменная "Значение" в вашем запросе не существует, у вас будет ошибка "лямбда-строка", а несколько ошибок после другого еще связаны с неизвестным/ошибочным полем.

В вашем случае это может быть:

objContentLine = (from q in db.qryContents
                  where q.LineID == Value
                  orderby q.RowID descending
                  select q).FirstOrDefault();

Ошибки:

Ошибка 241 Невозможно преобразовать лямбда-выражение для ввода 'string', потому что это не тип делегата

Ошибка 242 Делегат 'System.Func <.. > ' не принимает 1 аргумент

Ошибка 243 Имя "Значение" не существует в текущем контексте

Исправьте переменную переменной "Значение" , и другие ошибки также исчезнут.

Ответ 5

Для людей, которые просто спотыкаются об этом сейчас, я решил ошибку такого типа, которая была выбрана со всеми ссылками и использовала правильные положения. Очевидно, есть некоторая путаница с заменой функции, возвращающей DataTable, вместо того, чтобы вызывать ее в объявленном DataTable. Например:

Это сработало для меня:

DataTable dt = SomeObject.ReturnsDataTable();

List<string> ls = dt.AsEnumerable().Select(dr => dr["name"].ToString()).ToList<string>();

Но этого не произошло:

List<string> ls = SomeObject.ReturnsDataTable().AsEnumerable().Select(dr => dr["name"].ToString()).ToList<string>();

Я все еще не уверен на 100%, но если кто-то разочарован ошибкой этого типа, попробуйте это.