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; 我认为这会帮助你解决这个问题。