如何一起使用GroupBy和IQueryable并映射到DTO?

时间:2015-08-17 19:40:20

标签: asp.net-mvc entity-framework linq-to-entities iqueryable

情景:

我需要从数据库中获取一些记录,我需要通过CreationDate

对它们进行分组
IQueryable<AlbumDTO> albums = (from c in context.Albums.where(x =>x.SingerID==1)
.orderBy<x =>x.AlbumDate>.groupBy(x => x.AlbumDate)
select new AlbumsDTO()).Take(10));
  

但是如何使用此查询获取AlbumNames?

因为如果我这样做

 select new AlbumDTO()
 {
    AlbumName = //nothing comes here and throws error
 }

1 个答案:

答案 0 :(得分:0)

你可以尝试这样的事情:

context.Albums.Where(x=>x.SinderID==1)
    .OrderBy(x =>x.AlbumDate)
    .GroupBy(x => x.AlbumDate)
    .Select(_ => new AlbumsDTO{AlbumName = _.AlbumName});

在我对linq的理解中 - 您没有填充AlbumDTO个对象,只是初始化它们。

我在linq查询中填充AlbumDTO个对象的方式 - 假设AlbumName - 是同时包含公共setter和public getter的属性:

public class AlbumDTO
{
    public string AlbumName {get;set;}
}