如何用Linq拆分列表中双词字符串并统计两词相同的条目数?
解决Linq统计相同双单词字符串的问题
没问题,我来帮你补全这段Linq代码,完美实现你要的功能!
完整解决方案代码
针对你的需求,我们可以这样写:
var count = lst.Count(c => { // 按空格拆分字符串,同时移除空条目(避免多空格/前后空格的干扰) var wordParts = c.Split(new[] {' '}, StringSplitOptions.RemoveEmptyEntries); // 先确保拆分后正好是两个单词,再判断两者是否相等 return wordParts.Length == 2 && wordParts[0] == wordParts[1]; });
用你给出的示例列表测试的话,这段代码会返回2,完全符合预期——因为"bla bla"和"heh heh"都满足两个单词相同的条件。
更简洁的写法(C# 8+)
如果你的项目使用C# 8及以上版本,可以用解构语法让代码更紧凑:
var count = lst.Count(c => c.Split(new[] {' '}, StringSplitOptions.RemoveEmptyEntries) is [var firstWord, var secondWord] && firstWord == secondWord);
额外注意事项
- 如果需要忽略大小写(比如
"Bla bla"也要被统计),可以把相等判断改成:string.Equals(firstWord, secondWord, StringComparison.OrdinalIgnoreCase) StringSplitOptions.RemoveEmptyEntries这个参数很关键,它能过滤掉拆分后产生的空字符串(比如原字符串有多个连续空格,或者开头/结尾有空格的情况),避免出现索引越界或者错误判断。
内容的提问来源于stack exchange,提问作者no use for a name
相关产品推荐
相关产品推荐

