C# 使用Linq创建按属性分组的子列表
我有一个调查收集,这是一个自定义类。调查包含一个名为C# 使用Linq创建按属性分组的子列表,c#,.net,linq,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
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个新列表。前三个作为列表,第四个作为列表,第五个作为列表。使用
GroupBy
对项目进行分组:
var query = directionalSurveys.GroupBy(a => a.UWI.Remove(a.UWI.Length - 1, 1));
使用
GroupBy
对项目进行分组:
var query = directionalSurveys.GroupBy(a => a.UWI.Remove(a.UWI.Length - 1, 1));
可能有10个或更多的地下事件吗?我从来没有见过它,但它是一个可能性,那么你应该考虑一个不同的机制来提取结束-如果失败的话,它会失败。好的捕捉,我错过了。谢谢。能有10个或更多的地下事件吗?我从来没有见过它,但它是可能的,那么你应该考虑一个不同的机制来提取最终结果。如果发生这种情况,它会失败。好的捕捉,我错过了。非常感谢。