我制作了一个控制台应用程序,该应用程序正在使用linq读取csv文件,以将文件的每一行加载到IEnumerable中。
var lines = from rawLine in File.ReadLines(readFolderFile, Encoding.Default) where !string.IsNullOrEmpty(rawLine) && !string.IsNullOrEmpty(rawLine.Trim(';')) select rawLine;
现在,我需要检查每行与第一行相比有多少分号,并且如果某行的分号比第一行多,它将被添加到errorList中。
所以我的问题是,有什么简单的方法可以只计算每行中特定符号的数量?
结果应该是,我可以说,在我的源文件继续使用此应用程序之后,每一行具有相同数量的列。
答案 0 :(得分:4)
请记住,每个字符串都可以视为IEnumerable<char>
,因此:
using System.Linq;
...
"my;string;from;csv;file".Count(c => c.Equals(';')); // = 4;
...
答案 1 :(得分:1)
您可以使用此:
int count = source.Count(f => f == ';');
其中source是字符串变量。
因此,您的情况如下所示:
foreach (var line in lines)
{
if (line.Count(f => f == ';') != firstLineCount))
{
//your logic here
}
}