C# 实体框架-无法将lambda表达式转换为类型';字符串';因为它不是委托类型

C# 实体框架-无法将lambda表达式转换为类型';字符串';因为它不是委托类型,c#,.net,entity-framework,lambda,C#,.net,Entity Framework,Lambda,我在基于C#的代码中使用实体框架。我遇到了意想不到的怪事,我在寻求建议 案例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

我在基于C#的代码中使用实体框架。我遇到了意想不到的怪事,我在寻求建议

案例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();
}
我遇到了这个编译时错误(在我的编辑器中突出显示了“where”一词):
无法将lambda表达式转换为类型“string”,因为它不是委托类型


有什么想法会导致这种情况吗?

对于那些对结果感兴趣的人:
我在代码的开头缺少一个简单的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&&/我在Razor视图中的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(@);
应该是这样的:

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

“身份证”的案子是错的!我希望这对某人有帮助。您可能会因为放置了不存在的属性而出现此错误

我在将列绑定到Telerik MVC网格时遇到了类似的问题。
我的ViewModel类上有一个Id属性。(受Chris上述答案的启发)我将其重命名为XxxId,问题就消失了。我似乎还记得MVC为Id属性做了一些特殊的事情。

我也有类似的问题,但在Rx和我的例子中添加了

using System;
有帮助。FWIW


缺少扩展方法的混乱有时太烦人了。

我在mvc 3 razor上也遇到了同样的问题,也许有人也有同样的问题,所以我想在我的研究中展示如何解决它

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

我尝试使用contains,但是OgrenciId是int,我得到了这里提到的错误,因此通过使用equals,问题得到了解决

我偶然发现了这一点,并找到了一个不同的修复方法。我使用的是
var query=context.Contacts.Where(c=>c.FullNameReverse==“TingTong”)并获取提到的错误。错误是我使用了
FullNameReverse()
方法作为属性
FullNameReverse
。错过了比赛

就我而言,它不见了


使用System.Data.Entity

在我的例子中,我在尝试在Sharepoint 2013应用程序中使用Include In clientContext.Load时出现此错误

我包括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);
    ...
每一页上都有这个错误


这是一个使用MVC的项目,我发现我的问题是在模型中的这些变量(Id、名称等)上有“publicstaticint”或“publicstaticstring”。当我删除所有模型变量上的“static”时,我不再得到错误。大约有一天让我发疯了…

我的问题有一个稍微不同的版本。
如果从lambda内部调用(静态)方法,请检查其返回类型。如果返回类型应该是IEnumerable(在使用lambdas时通常是这样),但返回对象,那么显然存在问题。

请尝试
using System.Linq;
using System.Data.Entity;
使用System.Linq;
我想它会帮助你解决这个问题。

线程有点老了,但我只是遇到了这个问题,在“网络”上什么都不是答案。一个网站提到了导致答案的原因,这是一个数据类型问题,但遗憾的是,我再也找不到它了,所以我在这里发布了我的解决方案。也许未来的搜索者会从中受益

原始:IQueryable测试=来自记录中的r,其中r.Record\u ID==100选择r

其中记录是由先前的LINQ表达式生成的IQueryable

修复方法是在表达式中强制转换记录:(IQueryable)记录。找到了它,它就有了完美的意义。没有键入记录,因此LINQ不知道r.Record\u ID是否有效。令人困惑的是错误信息,它出现在网络上的几十个地方,在几乎所有情况下,解决方案都是缺少的两个using子句之一。我发现的一两个问题并不是使用问题,他们也懒得发布修复问题的方法


希望这对…有所帮助。

对于。Net Core只需介绍一下

using System.Linq;
using Microsoft.EntityFrameworkCore;

听起来确实很奇怪。如果删除对
FirstOrDefault
的调用,会发生什么?显然,如果您在之后尝试使用
product
,它将失败,但是该语句是否编译?另外,如果您将其更改为
var product=\u dbFeed.AutoWithImage.where(a=>a.AutoID==result)然后会发生什么?让我们把查询表达式从混合中去掉……所有这些示例都失败了。然而,我检查了我所有代码段中的Using语句,发现我缺少一条:Using System.Linq;这修正了错误。我很惊讶VS和ReSharper都没有足够的智能来检测这种情况。谢天谢地,SO比这两者都聪明。我得到了相同的错误消息,并且我已经(而且“一直都有”)使用System.LINQ。当然,其中一个模型成员将数据类型从string[]更改为string…我使用了“using System.data.EntityClient”;尽管它在那里,但它变灰了/不必要。不允许单独使用System.Data.Entity(没有“客户机”)。米格尔爵士,你是个天才。谢谢真烦人。即使我重新启动了Visual Studio,也没有IntelliSense来帮助我。
using System.Linq;
using System.Data.Entity;
using System.Linq;
using Microsoft.EntityFrameworkCore;