Cannot convert lambda expression to type 'string' because it is not a delegate type [duplicate]

匿名 (未验证) 提交于 2019-12-03 02:13:02

问题:

I am using a LINQ lambda expression like so:

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

However, I am getting the following error:

Cannot convert lambda expression to type 'string' because it is not a delegate type

回答1:

I think you are missing using System.Linq; from this system class.

and also add using System.Data.Entity; to the code



回答2:

In my case, I had to add using System.Data.Entity;



回答3:

My case it solved i was using

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

using

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

will solve it



回答4:

If it's not related to missing using directives stated by other users, this will also happen if there is another problem with your query.

Take a look on VS compiler error list : For example, if the "Value" variable in your query doesn't exist, you will have the "lambda to string" error, and a few errors after another one more related to the unknown/erroneous field.

In your case it could be :

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

Errors:

Error 241 Cannot convert lambda expression to type 'string' because it is not a delegate type

Error 242 Delegate 'System.Func<..>' does not take 1 arguments

Error 243 The name 'Value' does not exist in the current context

Fix the "Value" variable error and the other errors will also disappear.



回答5:

For people just stumbling upon this now, I resolved an error of this type that was thrown with all the references and using statements placed properly. There's evidently some confusion with substituting in a function that returns DataTable instead of calling it on a declared DataTable. For example:

This worked for me:

DataTable dt = SomeObject.ReturnsDataTable();  List<string> ls = dt.AsEnumerable().Select(dr => dr["name"].ToString()).ToList<string>(); 

But this didn't:

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

I'm still not 100% sure why, but if anyone is frustrated by an error of this type, give this a try.



易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!