Entity Framework-не удается преобразовать лямбда-выражение В тип 'string', поскольку это не тип делегата
Я использую Entity Framework в своем коде на C# . Я сталкиваюсь с неожиданной странностью и ищу предложения.
корпус 1, 2, 3, 4...
Проекты:
RivWorks.dll
RivWorks.Услуга.dll
RivWorks.Альфа.dll
образцы (все эти работы):
RivWorks.Альфа.dll:
public static bool EndNegotitation(long ProductID)
{
var product = (from a in _dbFeed.AutoWithImage
where a.AutoID == ProductID select a).FirstOrDefault();
...
}
RivWorks.Услуга.dll
public static RivWorks.Model.NegotiationAutos.AutoWithImage
GetProductById(long productId)
{
var myProduct = from a in _dbFeed.AutoWithImage
where a.AutoID == productId select a;
return myProduct.FirstOrDefault();
}
public static List<RivWorks.Model.NegotiationAutos.AutoWithImage>
GetProductByCompany(Guid companyId)
{
var myProduct = from a in _dbFeed.AutoWithImage
where a.CompanyID == companyId select a;
return myProduct.ToList();
}
etc
случае "странность":
RivWorks.Сеть.Услуга.dll (проект WCF)
Содержит те же ссылки, что и другие проекты.
public NegotiateSetup GetSetup(string method, string jsonInput)
{
...
long.TryParse(ProductID, out result);
var product = (from a in _dbFeed.AutoWithImage
where a.AutoID == result select a).FirstOrDefault();
...
}
Я получаю эту ошибку времени компиляции (слово " где " выделено в моем редакторе):
не удается преобразовать лямбда-выражение В тип 'string', потому что это не тип делегата
есть идеи, что могло бы вызвать это?
14 ответов:
для тех, кто заинтересован в исходе:
Мне не хватало простого оператора Using в начале моего кода.using System.Linq;
Это будет исправлено.
В моем случае, у меня был
Using System.Linq;
но я пропустил && после пункта where.
Плохой Код:
item.Group.ID == grp.ID p.Product_Status_Flag == 1 && item.Valid
правильный код ( без ошибок ):
item.Group.ID == grp.ID && // <- This was missing and I didn't see it right away. p.Product_Status_Flag == 1 && item.Valid
Я надеюсь, это сэкономит кому-то немного времени.
я боролся с этим в шаблоне сетки Telerik в виде бритвы около часа. В моем случае это:
columns.Bound(x => x.ID).Template(@<text><a href="@(Model.AppUrl + AdditionalFeeTypes/Details/" + item.ID)">@item.ID</a></text>);
должно быть:
columns.Bound(x => x.Id).Template(@<text><a href="@(Model.AppUrl + AdditionalFeeTypes/Details/" + item.Id)">@item.Id</a></text>);
случай на " Id " был неправильным! Надеюсь, это кому-то поможет. Вы можете получить эту ошибку только потому, что вы положили несуществующее свойство!
я наткнулся на это и нашел другое исправление. Я использовал
var query = context.Contacts.Where(c => c.FullNameReverse == "TingTong");
и получение упомянутой ошибки. Ошибка была в том, что я использовал методFullNameReverse()
в собственностьFullNameReverse
. Пропустил ()!!!
У меня была та же проблема с MVC 3 razor может быть, у кого-то есть то же самое, поэтому я хочу показать, как это исправить в моем stuation
List<Taksit> lst = db.Taksit.Where(y => y.OgrenciId.Equals(Convert.ToInt32( list[0].Id))).ToList();
Я пытался использовать contains но, следовательно, OgrenciId-это int я получаю ошибку, упомянутую здесь, поэтому с помощью equals проблема решена
нить немного старая, но я только что столкнулся с этим, и ничего в сети не было ответом. Один сайт упомянул, что привело к ответу, который был проблемой типа данных, но, к сожалению, я не могу найти его снова, поэтому я публикую свое решение здесь. Может быть, какой-нибудь будущий искатель извлекет из этого пользу.
Оригинал: интерфейс IQueryable тест = от Р в записях, где r.Record_ID == 100 выберите R;
где записи-это IQueryable результат предыдущего LINQ expresson.
исправление заключается в приведении записей: (IQueryable
)записи в выражении. Найдя его,это имеет смысл. Записи не набираются, поэтому LINQ не имеет понятия, если R. Record_ID допустим. Путаница-это сообщение об ошибке, которое появляется по всей сети в десятках мест, почти в каждом случае решение является одним из двух отсутствующих предложений using. Один или два я нашел, что не были проблемой использования, они не потрудились опубликовать то, что исправлено оно. надеюсь, что это помогает...
У меня была аналогичная проблема привязки столбцов к сетке Telerik MVC. У меня было свойство Id в моем классе ViewModel. (Вдохновленный ответом Криса выше) я переименовал его в XxxId, и проблема ушла. Кажется, я вспоминаю что-то о том, что MVC делает что-то особенное для свойств Id.
У меня была похожая проблема, но с Rx и в моем случае добавлять
using System;
помогло. Чистки рядов
беспорядок с этими методами расширения отсутствует слишком раздражает иногда.
в моем случае у меня была эта ошибка при попытке использовать Include в clientContext.Загрузите приложение Sharepoint 2013.
Я включил клиентскую библиотеку Sharepoint следующим образом:
using SP = Microsoft.SharePoint.Client;
исправить, кроме того, я также добавил его без пространства имен:
using Microsoft.SharePoint.Client; using SP = Microsoft.SharePoint.Client;
моя проблема связана с форматом:
.Columns(columns => { columns.Bound(p => p.Id).Filterable(false); columns.Bound(p => p.Name).Width(250); ...
каждый p. что бы ни было с этой ошибкой на нем.
Это был проект с использованием MVC, и я обнаружил, что моя проблема заключалась в том, что "public static int" или "public static string" для этих переменных (Id, Name и т. д.) в моей модели. Когда я удалил "статические" на все мои переменные модели, я больше не получил ошибку. Это сводило меня с ума около дня...