无法将 lambda 表达式转换为“ string”类型,因为它不是委托类型

我使用的 LINQ lambda 表达式是这样的:

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

然而,我得到了以下错误:

无法将 lambda 表达式转换为“ string”类型,因为它不是委托类型

167388 次浏览

我认为你在这个系统类中遗漏了 using System.Linq;

并将 using System.Data.Entity;添加到代码中

在我的例子中,我必须添加 using System.Data.Entity;

对于现在偶然发现这个问题的人来说,我解决了这种类型的错误,它与所有引用一起抛出,并使用正确放置的语句。在替换返回 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% 确定为什么,但是如果有人对这种类型的错误感到沮丧,请尝试一下。

我的案子解决了

@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无法将 lambda 表达式转换为“ string”类型,因为它不是委托类型

错误242委托‘ System. Func < . . >’不接受1个参数

错误243“值”名称在当前上下文中不存在

修正“ Value”变量错误,其他错误也将消失。