【发布时间】:2016-11-09 19:41:53
【问题描述】:
我创建了一个实体框架 API 控制器,现在我正在尝试从以下位置调整我的 GetData() 方法:
public IQueryable<VIPPreviewTimeSlots> GetData()
{
return db.Data;
}
到
public IQueryable<VIPPreviewTimeSlots> GetData()
{
return db.Data.SqlQuery("SELECT a,b,c FROM table INNER JOIN another table....");
}
但我收到此错误:
Cannot implicitly convert type 'System.Data.Entity.Infrastructure.DbSqlQuery’ to 'System.Linq.IQueryable’
如何将其转换为 IQueryable?
【问题讨论】:
-
我认为将 .AsQueryable() 添加到您的 return 语句的末尾会起作用。但是,根据this SO question 你不能。您可以更改函数签名以返回 IEnumerable
-
.AsQueryable() 工作!
-
@PaulStoner 这个答案是关于在
.SqlQuery上调用.AsQueryable。将函数签名更改为 IEnumerable 将导致它不再能够延迟链接。之后的一切都将在客户端而不是服务器端完成。.AsQueryable是这里的正确答案(实际上它也是您链接问题的正确答案,但它可能对.SqlQuery有性能影响,而这里没有。 -
@RobertMcKee 感谢您的意见。我个人认为 AsQueryable() 会像我在类似情况下使用过的那样工作,但不适用于 EF。永远感谢您的意见,
标签: c# asp.net entity-framework linq