如何在LINQ查询中使用Group By?

时间:2014-04-29 11:57:59

标签: c# linq asp.net-mvc-4 group-by

在我现有的项目中有linq查询,如下所示:

group new {a.name,a,description,a.number,i.productname}
by new {i.productname} into grpProduct

我的查询中有一个Group By,其语法与上面的查询类似。意味着它使用group new并在by new之后使用{{1}}。但我没有达到这种语法的目的。任何人都可以帮我解决这个问题吗?

2 个答案:

答案 0 :(得分:1)

假设您有一个这样的课程:

public class Student
{
    public int Id { get; set; }

    public string Name { get; set; }

    public int Age { get; set; }
}

你定义了一个列表并添加了一些学生......

var students = new List<Student>();

然后你就像这样创建了组:

var i = (from s in students
         group new { s.Id, s.Name }
         by new { s.Age });

by new部分指定您要创建分组的密钥。因此,当您执行查询时,每个Age将获得一个组,Age将成为每个组的“关键字”。

(由于只指定了一个字段,您可以将该部分重写为 by s.Age 。)

group new部分指定您希望在每个“群组”中提供的内容。虽然Age将成为关键,但当您深入了解每个组时,您将拥有一个包含IdName的匿名类型的集合。

答案 1 :(得分:0)

by语句声明用于对数据进行分组的键值,而group语句选择将“分组”的内容。因此,您的结果将是IGrouping i.productname(它将成为关键字),如果您获取每个这些分组的项目,您将使用{{{{{}}对象访问所有new {a.name,a,description,a.number,i.productname}个对象1}}对应此键。