我有一个包含许多重复子字符串的文件,并希望删除它们并仅保留第一个并在richtextbox中写入第一个子字符串的整行,在我的代码中我收到以下错误:
System.Linq.Enumerable + WhereSelectArrayIterator`2 [System.String,系统
var FilePrefixes = File.ReadAllLines(FILE)
.Select(line => line.Split(',')[0]);
var dupsubstrings= File.ReadAllLines(FILE)
.Where(line => FilePrefixes.Count() > 1).Select(line => line.First());
richTextBox1.AppendText(dupsubstrings+ Environment.NewLine);
答案 0 :(得分:3)
你在这做什么:
.Select(line => line.First());
选择每一行的第一个字符。我希望这不是你想做的,而是选择第一行(正如你在问题中所说的那样)。
要选择第一行,请将.Select
更改为:
.First();
答案 1 :(得分:1)
您可以尝试GroupBy
问题的子字符串,然后从每个分组块中获取First
项:
var distinctStrings = File
.ReadLines(FILE) // No "All"
.GroupBy(line => line.Split(',')[0], // group by prefix
(key, chunk) => chunk.First()); // take 1st ocurrence from each group
// Join all distinct strings into one
richTextBox1.AppendText(string.Join(Environment.NewLine, distinctStrings));
请避免ReadAllLines
(阅读所有行,然后才开始处理它们)和双重文件打开(File.ReadAllLines(FILE)
然后{{ 1}})