我正在使用简短的Linq表达式将文本文件读入字典
string[] lines = File.ReadAllLines(path);
var dictionary = lines.Select(line => line.Split(';')).ToDictionary(keyValue => keyValue[0], bits => bits[1]);
只要我的文本文件中没有重复的键,这就可以正常工作。是否有一种简短的方法来过滤那些没有很长的路并迭代线[]数组?
答案 0 :(得分:10)
您可以先使用GroupBy
:
var dictionary = lines.Select(line => line.Split(';'))
.GroupBy(arr => arr[0])
.ToDictionary(g => g.Key, g => g.First()[1]);
这会选择每个副本的第一个元素,如果不需要,则必须相应地更改g.First
。例如,您可以使用逗号分隔值:
var dictionary = lines.Select(line => line.Split(';'))
.GroupBy(arr => arr[0])
.ToDictionary(g => g.Key, g => string.Join(",", g.Select(arr=> arr[1])));