使用Linq创建按属性分组的子列表

时间:2013-06-17 17:32:25

标签: c# .net linq

我有一组调查,这是一个自定义类。调查包含一个名为UWI的属性。我想为每个唯一UWI创建多个列表。

一个棘手的部分是,UWI是一个位置。它可以写成00/01-08-023-23W4/0字符串的最后一个字符(在这种情况下为0)告诉你发生在地下的事件,第一部分是表面位置。我想根据表面位置对所有UWI进行分组,而不考虑深度。

例如:

  

00 / 01-08-023-23W4 / 0

  

00 / 01-08-023-23W4 / 3

是相同的表面位置,但它们具有不同的事件,因此应将它们分组。

在尝试解决问题的过程中,我尝试了:

 var test =  directionalSurveys.Select(a => a.UWI.Remove(a.UWI.Length - 1, 1));

这只返回了一份UWI列表。

如果主列表的集合中有5个对象:

  

00 / 01-08-023-23W4 / 0

     

00 / 01-08-023-23W4 / 1

     

00 / 01-08-023-23W4 / 2

     

00 / 01-06-028-19W4 / 0

     

00 / 01-04-018-15W4 / 0

最终结果将是3个新列表。前3个作为列表,第4个作为列表,第5个作为列表。

1 个答案:

答案 0 :(得分:3)

使用GroupBy对项目进行分组:

var query = directionalSurveys.GroupBy(a => a.UWI.Remove(a.UWI.Length - 1, 1));