【发布时间】:2017-05-08 06:05:15
【问题描述】:
目前我正在使用 三个 数据库查询在我的 MVC 应用程序中填充一个模型。
这是怎么回事:
IndexViewModel model = new IndexViewModel();
model.Links = Repository.GetAll().ToArray();
model.SourceOne = StaffMembersRepository.GetAll().ToArray();
model.SourceTwo = CategoriesRepository.GetAll().ToArray();
return model;
我希望只做一个查询(为了更好的性能),它应该返回三个表的所有行。
我不能进行内部连接,因为这三个表根本没有(假设它们没有)连接。
我试过了
var result = from link in Repository.GetAll()
from staffMember in StaffMembersRepository.GetAll()
from category in CategoriesRepository.GetAll()
select new { link, staffMember, category };
但是有一个编译错误突出显示“CategoriesRepository.GetAll()”这段代码说:
源类型为“System.Linq.IQueryable”的查询表达式的后续 from 子句中不允许使用“System.Linq.IQueryable”类型的表达式。调用“SelectMany”时类型推断失败。
不管那是什么意思。
【问题讨论】:
-
在 SQL 中只使用一个查询就不可能从三个表中检索数据(好吧,除了联合查询,但这是一种特殊情况)。是什么让您认为在后台生成 SQL 的 LINQ 可以做到这一点?是什么让您认为单个 LINQ 语句的性能会更好?
标签: c# linq-to-sql