我试图阻止对实体的查询带来的列数多于必要的数量。应该只带来目标模型中指定的那些列。 下面是我的代码,根据一些示例构建,以实现我的目标,但我得到语法错误"查询正文必须以select子句或group子句linq结尾“ 在查询行中。
var studentEventsModel = from c in DbContext.StudentEvent.Project().To<StudentEventViewModel>();
请让我知道我做错了什么。
public IEnumerable<StudentEventViewModel> GetStudentEventsListViewModel()
{
Mapper.CreateMap<StudentEvent, StudentEventViewModel>();
var studentEventsModel = from c in DbContext.StudentEvent.Project().To<StudentEventViewModel>();
return studentEventsModel;
}
答案 0 :(得分:0)
正如@hometoast所提到的,您可以在查询末尾添加select,如下所示:
var studentEventsModel =
from c in DbContext.StudentEvent.Project().To<StudentEventViewModel>() select c;
或警告你可以像这样使用lambda表达式:
var studentEventsModel = DbContext.StudentEvent.Project().To<StudentEventViewModel>();
关于您为什么会看到该错误的问题,这是因为查询语法必须以select
或group
结尾,文档中提到here
查询表达式必须以from子句开头,并且必须以a结尾 选择或分组子句。在第一个从句子和最后一个之间 select或group子句,它可以包含一个或多个这些可选项 从句:where,orderby,join,let甚至是from子句。 您还可以使用into关键字来启用连接的结果或 group子句作为其他查询子句的来源 相同的查询表达式。