【发布时间】:2019-10-10 21:26:39
【问题描述】:
使用 LINQ,如何将列表拆分为具有相同值的不同列表集?
就我而言,我有一个元组列表(参见下面的示例)。我想将我的列表分成 X 个子集,其中每个 item2 都相等。我已经找到了一个解决方案,即在string 上执行GroupBy 以将item2 的所有可能值放入一个列表中,然后在foreach 中,获得一个新列表,其中item2 等于当前@ 987654325@.
但是,我觉得它效率不高,必须有一个 LINQ 语句来完成这一切。我想知道它的未来。
所需的输出应该是元组列表,按字符串列中不同值的数量计算
+-------+--------+
| bool | string |
+-------+--------+
| true | type1 |
| false | type1 |
| true | type2 |
| false | type1 |
| false | type2 |
+-------+--------+
我的代码如下所示:
var items2 = results.GroupBy(tuple => tuple.Item2);
foreach (var item in items2)
{
var links = results.Where(tuple => tuple.Item2 ==
item.Key).ToList();
// Do what I want with the links List of my Tuple
}
【问题讨论】:
-
GroupBy() 应该是最优的——你的代码是什么样的?
-
期望的输出是什么?
-
我更新了我想要的输出并添加了我的代码