c# - 使用 Linq 将进程名称与 XML 列表进行比较

标签 c# linq process

我在 XML 文件中有一个进程名称列表,并试图将它们与当前在本地计算机上运行的进程进行比较。我已经设法在 foreach 循环中实现了它,但我更希望在 Linq 中执行它,因为我的代码中充满了循环。虽然我不能完全理解语法...

XDocument xdoc; // this is populated elsewhere
Process[] allProcesses = Process.GetProcesses();             

if (allProcesses.Any(_ => xdoc.Descendants("Process").ToList().Contains(_)) {}

我认为这是因为我需要以某种方式使用 allProcesses.ProcessName.Any 作为比较,但是 ProcessName 不会暴露自己,除非我在进程中执行 foreach 循环。

最佳答案

你必须比较进程的名称。

  1. 从 xml 中获取进程名称列表(取决于您的 xml 结构:xdoc.Descendants("Process").Select(x=>x.Value).ToList())
  2. 进程名称比较(process.ProcessName)

所以它看起来像这样:

XDocument xdoc; // this is populated elsewhere

var processList = xdoc.Descendants("Process").Select(x=>x.Value).ToList();
Process[] allProcesses = Process.GetProcesses();             

if (allProcesses.Any(p => processList.Contains(p.ProcessName)) {}

关于c# - 使用 Linq 将进程名称与 XML 列表进行比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42442223/

相关文章:

c# - 如何在 C# 中重用 "var"声明的变量

c# - 进程内存大小 - 不同的计数器

java - 进程类的 wait 方法不返回

c# - 即使在 ProcessWindowStyle.Hidden 之后,控制台窗口仍然弹出;

c# - 自定义控件可绑定(bind)属性中的值未更新 - Xamarin forms/Prism

c# - 将字符串值传递给 sql server

c# - 如何使此参数访问语法成为可能?

c# - 畸形字符串异常 Firebird + linq

c# - 用于字符串操作的正则表达式模式

c# - 通过 LINQ 查询显示,不重复