我正在使用简短的Linq表达式将文本文件读入字典

string[] lines = File.ReadAllLines(path);
var dictionary = lines.Select(line => line.Split(';')).ToDictionary(keyValue => keyValue[0], bits => bits[1]);

只要我的文本文件中没有重复的键,这就可以正常工作。是否有一种简短的方法可以过滤掉这些内容,而无需花费很多时间并遍历lines []数组?

最佳答案

您可以先使用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])));

关于c# - 将文本文件读入字典,没有重复项,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23779176/

10-17 00:06