如何使用LINQ对对象集合中的属性进行分组?

时间:2009-09-15 12:09:43

标签: .net linq grouping

我有一组已填充的Dim XXX As IEnumerable(Of MyObject)对象。 MyObject中有一个我想要分组的属性,例如MyObject.MyCode。

查看LINQ示例,不清楚Group XX By INTO语法正在做什么,我无法理解。

所以我所追求的是能够按MyCode的值进行分组,并查看我在XXX中拥有的每个值的数量。

我知道我没有很好地解释,但希望LINQ的人能够得到它。

由于

赖安

3 个答案:

答案 0 :(得分:3)

以下C#代码显示了如何执行此操作(抱歉,但我不是一个VB.NET人员):

var myGroups = from p in myObject
               group p by p.MyCode into g
               select new { Category1 = g.Key, Category = g };

into关键字基本上取得分组的结果,并将其放入您可以在选择部分中引用的新项目。

答案 1 :(得分:2)

基本上,“分组依据”操作有两个预测:

  • 你想要分组的是什么? (关键)
  • 您希望小组包含哪些内容? (值)

例如,假设我们有一群人。您可以按年龄对姓名进行分组,例如

  • 18:Bob,Jeff,Dave
  • 21:Jennifer,Matt

如果您直接使用GroupBy方法,则只需指定键选择器,在这种情况下,值选择器默认为“序列中的值”(例如,在上面的示例中,它会默认为“按年龄对Person个对象进行分组”。

如果您使用的是查询表达式语法,那将取决于您使用的语言。你可以有效地忽略“开始”部分,但这只是一个查询延续;它就像是说:“我不再需要我在查询中使用的任何其他变量,只需要分组的结果”(然后您可以在查询的后续位中使用它)。

答案 2 :(得分:1)

从OrderTable中的货件_

Group By Shipment.ShippingZip _

进入总数=总和(出货成本),平均值(出货成本)