Automapper Project()。To Error查询正文必须以select结尾

时间:2015-08-21 17:45:29

标签: automapper

我试图阻止对实体的查询带来的列数多于必要的数量。应该只带来目标模型中指定的那些列。 下面是我的代码,根据一些示例构建,以实现我的目标,但我得到语法错误"查询正文必须以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;
    }

1 个答案:

答案 0 :(得分:0)

正如@hometoast所提到的,您可以在查询末尾添加select,如下所示:

var studentEventsModel = 
 from c in DbContext.StudentEvent.Project().To<StudentEventViewModel>() select c;

或警告你可以像这样使用lambda表达式:

var studentEventsModel = DbContext.StudentEvent.Project().To<StudentEventViewModel>();

关于您为什么会看到该错误的问题,这是因为查询语法必须以selectgroup结尾,文档中提到here

  

查询表达式必须以from子句开头,并且必须以a结尾   选择或分组子句。在第一个从句子和最后一个之间   select或group子句,它可以包含一个或多个这些可选项   从句:where,orderby,join,let甚至是from子句。   您还可以使用into关键字来启用连接的结果或   group子句作为其他查询子句的来源   相同的查询表达式。