【发布时间】:2012-01-13 14:39:05
【问题描述】:
我正在开发一个程序,用户必须在其中输入某种字符串,程序会将其存储在 List 或 Array 中,然后计算该项目重复了多少次。
然后按照重复次数的降序显示重复次数最多的三个项目(第一个有10个重复,第2个有9个,第3个有8个)
听起来很简单。由于不知道有多少人会输入一个字符串,所以我使用了一个列表,然后按照这个例子:
foreach (string value in list.Distinct())
{
System.Diagnostics.Debug.WriteLine("\"{0}\" occurs {1} time(s).", value, list.Count(v => v == value));
}
但由于某种原因,.Distinct() 没有出现在我的列表名称之后。我做错什么了吗?这与我的 C#(不是 C# 3.0)有关吗?该示例从未提及任何有关添加其他引用等的内容。
有没有其他方法可以做到这一点?
【问题讨论】:
-
如果您使用的是 3.0 之前的版本,您将无法访问 Distinct 扩展方法。
-
您的预期结果是什么,您看到的结果是什么?
-
只是 .NET 2.0。很遗憾。对不起,我忘了提。
-
列出什么?很可能您在不区分相等性的对象上应用 distinct... 您可以使用 IEquatable 或 IEqualityComparer stackoverflow.com/questions/1365748/… 解决此问题