C# C语言中快速高效的迭代器#
我有一个单词的集合,并希望为每个单词分配一个唯一的int值。我读了一段关于LINQ的书,得出了以下结论:C# C语言中快速高效的迭代器#,c#,linq,C#,Linq,我有一个单词的集合,并希望为每个单词分配一个唯一的int值。我读了一段关于LINQ的书,得出了以下结论: var words = File.ReadAllLines(wordsFile); var numbers = Enumerable.Range(1, words.Count()); var dict = words .Zip(numbers, (w, n) => new { w, n }) .ToDictionary(i => i.w, i => i.n)
var words = File.ReadAllLines(wordsFile);
var numbers = Enumerable.Range(1, words.Count());
var dict = words
.Zip(numbers, (w, n) => new { w, n })
.ToDictionary(i => i.w, i => i.n);
问题是:
您不需要使用
Enumerable.Range
和Zip
方法,因为您可以使用Select
重载来提供索引:
var dict = File.ReadLines(wordsFile)
.Select((word, index) => new { word, index })
.ToDictionary(x => x.word, x => x.index + 1);
Select
已经有一个重载,可以为您提供每个元素的索引,因此您可以非常轻松地删除Zip
和Enumerable.Range
。。。