2009-09-15 32 views
2

我有一个对象集合,它已被填充为Dim XXX As IEnumerable(Of MyObject)。在MyObject中有一个属性,我想按组合,例如MyObject.MyCode。如何使用LINQ对象集合中的属性进行分组?

看看LINQ的例子,不清楚Group XX By INTO语法在做什么,我无法理解它。

因此,我所追求的是根据MyCode的值进行分组的能力,并查看XXX中每个值的数量。

我知道我没有解释得很好,但希望有一个LINQ的人会得到它。

感谢

瑞安

回答

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关键字基本上把group的结果放到一个新的item中,你可以在你选择的部分中引用它。

1

从装运OrderTable _

集团通过Shipment.ShippingZip _

成总的= SUM(Shipment.Cost),平均(Shipment.Cost)

2

基本上是一个“分组依据”操作有两个突出:

  • 你的希望将是什么? (关键)
  • 你想让这个小组包含什么? (值)

例如,假设我们有一群人。你可以按他们的年龄分组他们的名字,例如

  • 18:鲍勃,杰夫,戴夫
  • 21:珍妮弗,马特

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

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

相关问题