【发布时间】:2020-03-07 23:22:31
【问题描述】:
有一个类似的问题没有回答我的问题。 --> Count number of element in List>
我有一个包含子列表的列表:
List<string> sublist1 = new List<string>() { "a", "b" };
List<string> sublist2 = new List<string>() { "a", "b" };
List<string> sublist3 = new List<string>() { "a", "c" };
现在我想计算每个列表的出现次数。
a, b --> 2
a, c --> 1
我使用了来自 LINQ 的 distinct(),但我得到了输出:
a, b --> 1
a, b --> 1
a, c --> 1
我假设哈希码是不同的。
distinct() 是否有替代方法来查看列表值?
如果可能的话,我想在 LINQ 中解决这个问题。
编辑: 列表项的顺序必须相同!
【问题讨论】:
-
看起来像是
GroupBy()的工作 -
@MatthewWatson 我试过这个,但
GroupBy()也返回三个独特的元素。 :// -
distinct 将删除 dups,因此对于计数,您需要使用 groupby+count
-
您可能需要编写自己的比较器。在我脑海中的某个地方是 LINQ 根据它们的引用比较像
List<T>这样的对象的想法。这就是为什么distinct()仍然给你三个项目。 -
我无法删除其他人的反对票。
标签: c# list linq count compare