我最初使用这个if语句检查一行是否包含字符串,并相应地删除它。
if (!currentFile[i].Contains("whattoremove"))
{
currentFile[i] = "";
}
File.WriteAllLines(logPath, File.ReadAllLines(logPath).Where(l => !string.IsNullOrWhiteSpace(l)));
但是,这似乎很乏味,所以我尝试在LINQ中编写它
string[] currentFile = File.ReadAllLines(logPath).Where(l => string.Contains("whattoremove")
令我惊讶的是,似乎string.Contains并不存在于此。有没有办法使用LINQ来做到这一点?
答案 0 :(得分:2)
您在查询中做了两件错误的事情,
whattoremove
的行,因此在where子句中您必须使用!
,否则您将获得包含指定字词的行。IEnumerable<string>
,但无法将其分配给string[]
,因此您必须使用.ToArray()
进行转换。实际上Linq查询应该是这样的:
string[] filteredLines = File.ReadAllLines(logPath).Where(l => !l.Contains("whattoremove")).ToArray();