我在 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 循环。
最佳答案
你必须比较进程的名称。
- 从 xml 中获取进程名称列表(取决于您的 xml 结构:
xdoc.Descendants("Process").Select(x=>x.Value).ToList()
) - 与
进程
名称比较(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/