【发布时间】:2021-06-12 20:08:20
【问题描述】:
我确定这是一个愚蠢的问题,但我找不到将一个列表按另一个列表分组的简单方法。 我在互联网上搜索了很多,但我只找到了具有类属性或排序元素的示例。
我有一个带键的字符串列表,例如:
List<string> keys = new List<string>();
keys.Add("a");
keys.Add("a");
keys.Add("b");
keys.Add("a");
keys.Add("c");
keys.Add("c");
keys.Add("a");
keys.Add("b");
还有一个我想按key列表分组的int列表,例如:
List<int> vals = new List<int>();
vals.Add(10);
vals.Add(11);
vals.Add(12);
vals.Add(13);
vals.Add(14);
vals.Add(15);
vals.Add(16);
vals.Add(17);
所以结果应该是一个包含子列表的列表,例如:
{{10,11,13,16},{12,17},{14,15}}
或者也可以获取索引。 提前致谢。
【问题讨论】:
-
你能和我们分享你的代码吗?
-
所以实际上
vals是keys元素的索引,可以删除。您想按值分组并获取分组元素的索引。 -
Zip 将这 2 个集合合并为一个
List<CustomObject>和class CustomObject{ string Key{get;set;} int Value{get;set;} }。然后使用简单的GroupBy -
艾米,代码很复杂,我正在使用特定的技术软件 (Revit)。我简化了我的“问题”。 Jacek,vals 是我要分组的元素。自我,我不想为这个临时的分组任务创建另一个类。分组后,键列表将被丢弃。