无法将类型'Program.Data.View'隐式转换为System.linq.iqueryable <Program.Data.View>.

see*_*arp 4 c# linq casting iqueryable

目标/问题:我尝试使用First或FirstOrDefault仅从数据库返回1个结果.我收到以下错误:

无法将类型'Program.Data.view'隐式转换为System.Linq.Iqueryable存在显式转换(您是否缺少转换)

我尝试过: 在浏览文档和许多SO文章后,我尝试了不同的投射方式,包括下面的代码.诸如无法将类型'System.Linq.IQueryable <>隐式转换为的文章.存在显式转换(您是否错过了演员?).大多数文章都是从System.Linq.IQueryable <>转到其他方面,而不是这个方向.无论哪种方式铸造应该相对容易,我缺少什么?:

IQueryable<Program.Data.view> someVariable = db.view.First(m => m.ID == Search_ID);
Run Code Online (Sandbox Code Playgroud)

我的方法签名是:

public IQueryable<Program.Data.view> GetDataFromQuery()
Run Code Online (Sandbox Code Playgroud)

Ren*_*ogt 5

First()和类似的方法(如FirstOrDefault()Count()Average())并没有返回IQueryable<Program.Data.view>,并且不使用延迟执行.

First()立即执行,返回一个(好吧,第一个)Program.Data.view.

所以错误信息是正确的.将您的签名更改为

public Program.Data.view GetDataFromQuery()
Run Code Online (Sandbox Code Playgroud)

和提到的行:

Program.Data.view someVariable = db.view.First(m => m.ID == Search_ID);
Run Code Online (Sandbox Code Playgroud)