我在使用LINQ和2谓词时遇到了问题。基本上,我需要从符合我下面的谓词的文本文件中删除一行。但它不起作用,只有特定Environment.MachineName
的行被删除。使用LINQ过滤掉文本文件中的行C#
编辑:为rLogonTime增加了输入数据
private static string rLogonTime = DateTime.Now.ToLongTimeString().ToString();
var oldLines = File.ReadAllLines(rLogonPath);
var newLines = oldLines.Where(x => !x.Contains(Environment.MachineName) && !x.Contains(rLogonTime)); //<--
File.WriteAllLines(rLogonPath, newLines);
是否有可能做到这一点?还是有另一种方式?
干杯。
编辑:再一次,我很抱歉不清楚。
rLogonTime
是一个静态字符串,我的文本文件DOES包含与它在应用程序中的DEBUG模式下相同的值。如果我尝试
var newLines = oldLines.Where(x => !x.Contains(rLogonTime));
它自己,它的工作原理。 Environment.MachineName
但它们不能一起工作。
另外,根据要求从文本文件中选择几行。
u####,######!,####.vshost.exe,31/10/2014,11:58:11 AM,PC-67027
u####,######!,####.vshost.exe,31/10/2014,12:15:02 PM,PC-65027
@BradleyDotNET为什么要删除它没有线?逻辑上说,它应该保留所有不包含一件事物并且不包含其他事物的行。它删除包含任何东西的所有行。 – Servy 2014-10-31 01:07:16
@BradleyDotNET Appologies,我上面编辑了我的问题,它只删除特定机器名称的行,但不检查'rLogonTime'。 – 2014-10-31 01:07:45
@TonyMontana肯定会检查rLogonTime。它只是不匹配任何。可能是由于日期时间格式的差异。 – 2014-10-31 01:09:08