entity framework – 无法将lambdaexpression式转换为“string”types,因为它不是委托types

我在我的基于C#的代码中使用entity framework。 我遇到了一个意想不到的奇怪,我正在寻找build议。

案例1,2,3,4 …项目:
RivWorks.dll
RivWorks.Service.dll
RivWorks.Alpha.dll

样品(所有这些工作):
RivWorks.Alpha.dll:

public static bool EndNegotitation(long ProductID) { var product = (from a in _dbFeed.AutoWithImage where a.AutoID == ProductID select a).FirstOrDefault(); ... } 

RivWorks.Service.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(); } 

等等

案例“怪异”:
RivWorks.Web.Service.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(); ... } 

我得到这个编译时错误(单词“where”在我的编辑器中突出显示):
无法将lambdaexpression式转换为“string”types,因为它不是委托types

任何想法会导致这个?

对于那些对结果感兴趣的人:
我错过了我的代码的头部简单的使用语句。

 using System.Linq; 

这固定了它。

在我的情况下,它失踪了

using System.Data.Entity;

我在一个Razor视图中的Telerik Grid模板中苦苦挣扎了大约一个小时。 就我而言,这是:

 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>); 

“身份证”的情况是错的! 我希望这可以帮助别人。 你可能会因为把一个不存在的属性而得到这个错误!

 using System.Linq; using System.Data.Entity; 

就我而言,我有

 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 

我希望这能节省一些时间。

我偶然发现了这个,并find了一个不同的解决办法。 我正在使用var query = context.Contacts.Where(c => c.FullNameReverse == "TingTong"); 并得到提及的错误。 错误是我正在使用方法FullNameReverse()作为属性FullNameReverse 。 错过了()!!!

我有与mvc 3razor相同的问题,也许有人有相同的,所以我想展示如何解决它在我的stuation

 List<Taksit> lst = db.Taksit.Where(y => y.OgrenciId.Equals(Convert.ToInt32( list[0].Id))).ToList(); 

我试图使用包含但因此OgrenciId是int我得到这里提到的错误,所以通过使用等于问题解决

我有一个类似的问题绑定到Telerik MVC Grid的列。 我的ViewModel类有一个Id属性。 (受到Chris的回答的启发)我把它重命名为XxxId,问题就消失了。 我似乎回想起有关MVC做一些特殊的Id属性的东西。

我有一个类似的问题,但与Rx和在我的情况下增加

 using System; 

帮助。 FWIW

乱丢这些扩展方法有时候太烦人了。

在我的情况下,当我尝试在Sharepoint 2013应用程序的clientContext.Load中使用Include时出现此错误。

我已经包含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.What都有这个错误。

这是一个使用MVC的项目,我发现我的问题是在我的模型中对这些variables(Id,Name等)使用“public static int”或“public static string”。 当我删除所有模型variables的“静态”,我不再有错误。 开车让我疯狂了一整天

我有一个稍微不同的版本这个问题。
你应该从你的lambda中调用(静态)方法,检查它的返回types。 如果返回types应该是IEnumerable(当使用lambda时常常是这样),但返回对象,显然你有一个问题。

试试使用System.Linq; 我认为这会帮助你解决这个问题。