我有一个已导入控制台的文件:我希望搜索其中的唯一条目,例如:
tom
tim
tim
tom
alan
当我搜索文件时,我想计算文件中唯一行的数量。
我正在使用.NET Framework 3.5
,因此我无法使用System.Linq
。有什么建议?除了升级到.NET 4
?
答案 0 :(得分:4)
int numberOfUniqueLines = File.ReadAllLines(filename).Distinct().Count();
关于这个:
.NET 3.5中提供了 LINQ 。但是,如果您使用的是.NET 2.0,则可以使用字典:我使用框架3.5所以不能使用system.linq任何建议?
Dictionary<string, object> uniqueLines = new Dictionary<string, object>();
foreach (string line in File.ReadAllLines(filename)) {
uniqueLines[line] = null;
}
int numberOfUniqueLines = uniqueLines.Keys.Count;
答案 1 :(得分:3)
遍历文件中的行。
将每行添加到HashSet<string>
。
返回Count
的{{1}}属性。
示例:
HashSet<string>
编辑我最初有int lineCount = new HashSet<string>(File.ReadAllLines(fileName)).Count;
,因为如果你有很多重复的行会使用更少的内存。该方法是在.NET 4中引入的,因此在规定的要求下无法使用。
EDIT2 System.Core.dll是框架3.5的一部分,所以你真的应该能够在某个地方找到它(也许是GAC?)。但是,如果你不能,你可以通过将行加载到File.ReadLines
,对其进行排序,然后仅在项目与前一项目不同的情况下对项目进行计数来实现目标(请注意,如果任何项目失败,则会失败)在列表中为null):
List<string>