c# - 将 2 个 foreach 循环减少到一个 linq 查询中

标签 c# linq loops

有什么办法可以将下面的代码缩减成Linq形式吗?

foreach (var current in currentWhiteListApps)
{
    var exists = false;

    foreach (var whiteList in clientSideWhiteLists)
    {
       if (current.appID.Equals(whiteList.appID))
       {
           exists = true;
       }
    }
    if (!exists)
    {
        deleteList.Add(current);
    }
}

我能想到的是:

currentWhiteListApps.Select(x => {
    var any = clientSideWhiteLists.Where(y => y.appID.Equals(x.appID));
    if (any.Any())
        deleteList.AddRange(any.ToArray());
    return x;
});

使用 LINQ 的原因
LINQ 比嵌套的 foreach 循环更具可读性,并且需要的代码更少。所以这就是我希望在 LINQ

中使用它的原因

最佳答案

var deleteList = currentWhiteListApps.Where(x =>
                     clientSideWhiteLists.All(y => !x.appID.Equals(y.appID)))
                                     .ToList();

关于c# - 将 2 个 foreach 循环减少到一个 linq 查询中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15613999/

相关文章:

c# - 如何在 WPF 中将字典绑定(bind)到组合框

c# - 使用linq返回具有多个存储在字典中的值的列表

python - 检查 float 是否相等时无限循环

c - 想要为此代码创建某种循环

javascript - 重复功能直到完成?

c# - SqlDataSource onSelected 事件未触发

c# - Visual Studio C# : How to keep spaces between angle brackets?

c# - 从 MM/dd/yy 格式创建有效日期

c# - 为什么此 LINQ 分组的计数为 3 而不是 2?

linq - 如何在 LINQ 中设置自动增量 value=true