128

我正在使用这样的 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 表达式转换为类型“字符串”,因为它不是委托类型

4

5 回答 5

337

我认为你在using System.Linq;这个系统类中失踪了。

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

于 2013-10-05T12:00:52.503 回答
98

就我而言,我必须添加using System.Data.Entity;

于 2013-12-06T07:26:26.880 回答
20

我的情况它解决了我正在使用

@Html.DropDownList(model => model.TypeId ...)  

使用

@Html.DropDownListFor(model => model.TypeId ...) 

会解决的

于 2014-11-11T07:27:39.293 回答
8

如果它与缺少其他用户声明的 using 指令无关,如果您的查询存在其他问题,也会发生这种情况。

查看 VS 编译器错误列表:例如,如果查询中的“Value”变量不存在,则会出现“lambda to string”错误,以及与未知相关的几个错误/错误的字段。

在您的情况下,它可能是:

objContentLine = (from q in db.qryContents
                  where q.LineID == Value
                  orderby q.RowID descending
                  select q).FirstOrDefault();

错误:

错误 241 无法将 lambda 表达式转换为类型“字符串”,因为它不是委托类型

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

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

修复“Value”变量错误,其他错误也会消失。

于 2015-01-15T15:02:20.140 回答
5

对于现在偶然发现这一点的人,我解决了这种类型的错误,该错误在所有引用和 using 语句放置正确时引发。用一个返回 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% 确定为什么,但如果有人对这种类型的错误感到沮丧,请尝试一下。

于 2014-07-24T14:31:21.093 回答