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



этот вопрос уже есть ответ здесь:




  • Entity Framework-не удается преобразовать лямбда-выражение В тип 'string', поскольку это не тип делегата

    14 ответов



Я использую лямбда-выражение 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', потому что это не тип делегата


737   5  

5 ответов:

Я думаю, что вы пропали без вести using System.Linq; из этого системного класса.

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

в моем случае, я должен был добавить using System.Data.Entity;

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

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

используя

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

разрешим его

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

посмотрите на список ошибок компилятора VS : Например, если переменная " Value "в вашем запросе не существует, у вас будет ошибка" lambda to string " и несколько ошибок после другой, связанных с неизвестным/ошибочным полем.

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

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

ошибки:

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

Ошибка 242 Делегата ' Системы.Функция.<.> не принимает 1 аргументов

ошибка 243 имя 'Value' не существует в текущем контексте

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

для людей, просто наткнувшихся на это сейчас, я разрешил ошибку этого типа, которая была брошена со всеми ссылками и использованием операторов, размещенных правильно. Очевидно, есть некоторая путаница с заменой в функции, которая возвращает 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% уверен, почему, но если кто-то расстроен ошибкой этого типа, попробуй это сделать.

Comments

    Ничего не найдено.