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

Dee*_*rma 99 c# linq asp.net lambda

我正在使用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();
}
Run Code Online (Sandbox Code Playgroud)

但是,我收到以下错误:

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

S. *_*wat 271

我认为你在using System.Linq;这个系统类中缺少.

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

  • 这必须是有史以来最愚蠢的事情.给你一个完全误导性的错误信息,而不是清楚地说明你错过了一个参考.有人无法在微软编程.好吧,谢谢你的修复 (29认同)
  • `System.Data.Entity;`这对我有帮助,我正在使用`Include()`进行急切加载.谢谢 :) (10认同)

skb*_*skb 95

在我的情况下,我不得不补充 using System.Data.Entity;

  • 谢谢!这让我解决了:) (2认同)
  • @Ryan Kohn我已经应用了这里描述的所有解决方法,但没有一个没有解决我的问题.那么,你能不能看一下Kendo UI上描述的内容:无法将lambda表达式转换为'string'类型,因为它不是委托类型?提前致谢. (2认同)

小智 13

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

@Html.DropDownList(model => model.TypeId ...)  
Run Code Online (Sandbox Code Playgroud)

运用

@Html.DropDownListFor(model => model.TypeId ...) 
Run Code Online (Sandbox Code Playgroud)

会解决它

  • @Hamad人们可以发布已经接受答案的问题的答案.这个答案确实给出了OP报告的异常可能发生的另一种情况,因此可以帮助其他人获得此异常. (13认同)
  • 这解决了我的问题!谢谢. (3认同)
  • 为什么你发布这个作为答案!当一个不同的答案被接受为正确的答案? (2认同)
  • 谢谢,非常感谢,这对我很有帮助 (2认同)

AFr*_*act 6

如果这与其他用户声明的使用指令丢失无关,如果您的查询还有其他问题,也会发生这种情况。

看一看VS编译器错误列表:例如,如果查询中的“ Value”变量不存在,则将出现“ lambda to string”错误,还有一些错误与未知/错误的字段。

在您的情况下,可能是:

objContentLine = (from q in db.qryContents
                  where q.LineID == Value
                  orderby q.RowID descending
                  select q).FirstOrDefault();
Run Code Online (Sandbox Code Playgroud)

错误:

错误241无法将lambda表达式转换为类型'string',因为它不是委托类型

错误242代表'System.Func <..>'没有1个参数

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

修复“值”变量错误,其他错误也将消失。


小智 5

对于现在刚刚遇到这个问题的人,我解决了这种类型的错误,该错误是在所有引用和 using 语句放置正确时引发的。显然,在一个返回 DataTable 的函数中进行替换,而不是在声明的 DataTable 上调用它,这显然有些混淆。例如:

这对我有用:

DataTable dt = SomeObject.ReturnsDataTable();

List<string> ls = dt.AsEnumerable().Select(dr => dr["name"].ToString()).ToList<string>();
Run Code Online (Sandbox Code Playgroud)

但这并没有:

List<string> ls = SomeObject.ReturnsDataTable().AsEnumerable().Select(dr => dr["name"].ToString()).ToList<string>();
Run Code Online (Sandbox Code Playgroud)

我仍然不能 100% 确定原因,但是如果有人对此类错误感到沮丧,请尝试一下。