C# 如何在LINQ查询中使用GROUPBY?
在我现有的项目中有linq查询,类似这样:C# 如何在LINQ查询中使用GROUPBY?,c#,linq,asp.net-mvc-4,group-by,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 public class Student { public int Id { get; set; } public string Name { get; set; } public int Age { get; set; } } va
group new {a.name,a,description,a.number,i.productname}
by new {i.productname} into grpProduct
public class Student
{
public int Id { get; set; }
public string Name { get; set; }
public int Age { get; set; }
}
var i = (from s in students
group new { s.Id, s.Name }
by new { s.Age });
我的查询中有一个GROUPBY,其语法与上面的查询类似。表示它正在使用
分组新建
,然后使用分组新建
。但是我不明白这个语法的目的。有人能帮我吗?语句by
声明用于分组数据的键值,而group
语句选择要“分组”的键值。因此,您的结果将是对i.productname
进行i分组
(这将是密钥),如果您获取这些分组项目中的每个项目,您将访问所有新的{a.name,a,description,a.number,i.productname}
与此键对应的具有i.productname
的对象。假设您有这样一个类:
group new {a.name,a,description,a.number,i.productname}
by new {i.productname} into grpProduct
public class Student
{
public int Id { get; set; }
public string Name { get; set; }
public int Age { get; set; }
}
var i = (from s in students
group new { s.Id, s.Name }
by new { s.Age });
您定义了一个列表并向其中添加了一些学生
var students = new List<Student>();
by new
部分指定创建分组所用的键。因此,当您执行查询时,每个Age
将得到一个组,Age
将是每个组的“键”
(由于只指定了一个字段,您可以将该部分重写为s.Age的)
group new
部分指定您希望在每个“组”中提供的内容。鉴于Age
将是关键,当您深入到每个组时,您将拥有一个匿名类型的集合,其中包括Id
和Name
,您能建议我一种在简单sql查询中转换此查询的方法吗?当然。希望SQL中的group by
语句更简单一些:从表a中选择a.name、a.description、a.number、i.productname,表i join。。。按i.productname分组
此处的分组依据
和选择
是不同的。