c# - 如何在 lambda 表达式或 linq 中编写以下代码?

标签 c# linq lambda

我只想知道如何在 lambda 表达式或 linq 中编写以下代码。知道的请回答。

Process[] runingProcess = Process.GetProcesses();
ManagementObjectCollection moReturn;
ManagementObjectSearcher moSearch;

void func()
{                                                                          
    moSearch = new ManagementObjectSearcher("Select * from Win32_Product");  
    moReturn = moSearch.Get();
    foreach (ManagementObject mo in moReturn)
    {
        foreach (var process in Process.GetProcessesByName(mo["Name"].ToString()))
        {
            process.Kill();
        }
    }
}

最佳答案

与其他答案不同,我认为使用 .ToList().ForEach(...) 与 LINQ 相反。使用这些关键字后,您的 LINQ 查询就会结束。特别是 .ForEach(),因为 .ForEach(...) 的目的是 cause a side-effect , LINQ 用于查询。

我的版本是:

// Query for processes to kill
var data = new ManagementObjectSearcher("Select * from Win32_Product")
    .Get()
    .Cast<ManagementObject>()
    .SelectMany(mo => Process.GetProcessesByName(mo["Name"].ToString()));

// Kill the processes
foreach (var item in data) {
    item.Kill();
}

关于c# - 如何在 lambda 表达式或 linq 中编写以下代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36929583/

相关文章:

C++11:使用自定义 Lambda 删除器返回 std::unique_ptr

c# - AnyCpu 引用 x64 有效吗?

c# - 传递带有哈希值的 URL 以进行重定向

c# - 在 Json.Net 中获取 JObject 的名称

c# - 为什么这个Linq表达式比另一个表达式慢很多?

c# - NUnit 测试中的 Lambda 和委托(delegate)类型 : compiler errors

lambda - 如何删除使用 lambda 创建的 JavaFX 中的 EventFilter

c# - 以编程方式启动 Visual Studio; C# 相当于 VB 的 CreateObject ("VisualStudio.DTE.8.0")

c# - 迭代面板控件

c# - LINQ 交叉连接列表列表?未知数量列表的笛卡尔积