将多个记录的查询展平到一个对象

时间:2019-09-02 13:55:24

标签: c# linq entity-framework-core

我有一个linq查询,它使用Entity Framework Core从数据库中获取一些记录,如下所示:

var result = (from users in _context.Users
              on ratings in _context.Ratings on ratings.UserId = users.Id
    select new
    {
        FirstName = users.FirstName,
        LastName = users.LastName,
        Rating = ratings.Rating
    }
    ).ToList();

这给了我类似的东西

John   Doe   7
John   Doe   4
John   Doe   8
John   Doe   9
John   Doe   7

但是我希望它像这样记录在其中:

John   Doe   7   4   8   9   7

结果可以是通过Web api在Json中返回的匿名类型。

使用上面的查询是否有可能?或者之后是否需要使用foreach循环进行一些处理?

1 个答案:

答案 0 :(得分:0)

您可以使用LINQ的函数语法来实现此目的,因为User对象应该具有ICollection<Rating>的导航属性。

var users = _context.Users
    .Include(x => x.Ratings)
    .Select(x => new { 
        FirstName = x.FirstName,
        LastName = x.LastName,
        Ratings = x.Ratings
    }
);