我正在使用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'类型,因为它不是委托类型
答案 0 :(得分:254)
我认为你在这个系统类中缺少using System.Linq;
。
并将using System.Data.Entity;
添加到代码
答案 1 :(得分:94)
就我而言,我必须添加using System.Data.Entity;
答案 2 :(得分:12)
我的情况解决了我正在使用
@Html.DropDownList(model => model.TypeId ...)
使用
@Html.DropDownListFor(model => model.TypeId ...)
将解决它
答案 3 :(得分:4)
如果它与其他用户声明的使用指令缺失无关,那么如果您的查询存在其他问题,也会发生这种情况。
看看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名称'价值'在当前上下文中不存在
修复"价值"变量错误和其他错误也将消失。
答案 4 :(得分:3)
对于那些现在磕磕绊绊的人,我解决了这种类型的错误,该错误与所有引用一起抛出并正确放置了使用的语句。在一个返回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%确定原因,但是如果有人对此类错误感到沮丧,请尝试一下。