Group By,以第二名的价格获得第一名

时间:2016-03-14 19:51:17

标签: c# linq

我有一个从数据库中的视图生成的列表。我想使用linq和c#将结果转换为自己的类。我想按ID分组,然后从第一个分组中选择所有值,但也从分组中的第二个实体中选择一个值。

例如

Id名称得分1得分2

  • 1 Jack 10 11
  • 1 Jill 10 11

我希望能够按ID分组,从第一条记录中选择得分1和2(它们将始终相同),但也选择名称jack和jill。

这甚至可能吗?

由于

1 个答案:

答案 0 :(得分:1)

为什么不让它变得简单,除了名字之外的所有东西?如果您说的是真的,那么这应该没有问题,整个ID的分数是相同的。

var result = from user in users
    group user by new {user.Id, user.Score1, user.Score2}
    into groupedUsers
    select new { groupedUsers.Key.Id, groupedUsers.Key.Score1, groupedUsers.Key.Score2, Names = groupedUsers.Select(x => x.Name)};

这是假设您使用以下模型对id上的所有记录进行分组,而不仅仅是前2个遇到具有相同ID的记录。

public class User
{
    public string Name { get; set; }
    public int Id { get; set; }
    public int Score2 { get; set; }
    public int Score1 { get; set; }
}