我在使用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