在我现有的项目中有linq查询,如下所示:
group new {a.name,a,description,a.number,i.productname}
by new {i.productname} into grpProduct
我的查询中有一个Group By,其语法与上面的查询类似。意味着它使用group new
并在by new
之后使用{{1}}。但我没有达到这种语法的目的。任何人都可以帮我解决这个问题吗?
答案 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
将成为关键,但当您深入了解每个组时,您将拥有一个包含Id
和Name
的匿名类型的集合。
答案 1 :(得分:0)
by
语句声明用于对数据进行分组的键值,而group
语句选择将“分组”的内容。因此,您的结果将是IGrouping
i.productname
(它将成为关键字),如果您获取每个这些分组的项目,您将使用{{{{{}}对象访问所有new {a.name,a,description,a.number,i.productname}
个对象1}}对应此键。