我在将LINQ与2个谓词一起使用时遇到麻烦。基本上,我需要从文本文件中删除与以下谓词匹配的一行。但这是行不通的,只Environment.MachineName
删除了特定行。
编辑:添加了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
是静态字符串,我的文本文件包含的值与我的应用程序在调试模式下的值相同。如果我尝试
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
我认为您的逻辑几乎是正确的。您要排除包含Environment.MachineName
和的所有行rLogonTime
,因此要排除的行是:
contains MachineName AND contains LogonTime
因此,将其全部包裹在一个NOT中:
var newLines = oldLines.Where(x => !(x.Contains(Environment.MachineName) && x.Contains(rLogonTime)))
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句