我有一组调查,这是一个自定义类。调查包含一个名为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个作为列表。
答案 0 :(得分:3)
使用GroupBy
对项目进行分组:
var query = directionalSurveys.GroupBy(a => a.UWI.Remove(a.UWI.Length - 1, 1));