[英]C# Linq .Contains list of string
如何檢查在哪里line.Contains(“ One”)多於一個字符串? 例如,選擇文件如何包含帶有“名稱”列表的文本元素的行。
private void button_Click(object sender, RoutedEventArgs e)
{
List<string> names = new List<string>() { "One", "Two", "Three" };
try
{
var files = from file in Directory.EnumerateFiles(@"D:\Logs\", "*.log", SearchOption.AllDirectories)
from line in File.ReadLines(file)
where line.Contains("One")
select new
{
File = file,
Line = line
};
foreach (var f in files)
{
Debug.WriteLine("{0}\t{1}", f.File, f.Line);
}
//MessageBox.Show(files.Count().ToString() + " record found.");
}
catch (UnauthorizedAccessException UAEx)
{
Console.WriteLine(UAEx.Message);
}
catch (PathTooLongException PathEx)
{
Console.WriteLine(PathEx.Message);
}
}
var files = from file in Directory.EnumerateFiles(@"D:\Stary komp\Logi\Logs2\", "*.log", SearchOption.AllDirectories)
from line in File.ReadLines(file)
where names.Any(name => line.Contains(name))
select new
{
File = file,
Line = line
};
您可能可以嘗試使用以下方法:
line.Intersect(names).Any()
雖然,我不確定它是否可以在Linq表達式中使用?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.