我在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
名称(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)) {}