0

我的目标是获取任何未在例外列表中明确调用的未决 Windows 更新,并将它们转储到安装的更新的辅助 UpdateCollection 中。我的伪代码如下所示:

包含不应安装更新的 KB 编号的字符串列表:

List<string> windowsUpdateExceptionKBList
KB1234567
KB2644615
KB483729

WUApiLib.UpdateCollection 包含更新对象

UpdateCollection securityUpdatesList
Iupdate object1
Iupdate object2

每个更新对象都有一个包含 KB 编号的“.Title”属性(例如,基于 x64 的系统的 Windows 7 安全更新 (KB2644615))。我需要以下内容:

UpdateCollection securityUpdatestoInstall = new UpdateCollection();

foreach (Iupdate update in securityUpdatesList)
 {  
 foreach (string kB in windowsUpdateExceptionKBList)
    { 
        if (!update.Title **contains** kB)
           {
              securityUpdatestoInstall.Add(update);
           }
    }
 }

由于嵌套的 foreach 循环,上述内容不会按建议工作,因为它将向列表添加重复更新。但是我什至很难概念化如何在 C# 中实现这一点。

4

1 回答 1

1

如果没有找到匹配项,您需要采取措施,因此添加一个变量来跟踪是否找到匹配项,并在第一个匹配项时突破内部foreach,然后根据是否找到匹配项有条件地添加更新:

UpdateCollection securityUpdatestoInstall = new UpdateCollection();

foreach (Iupdate update in securityUpdatesList)
{
    bool blacklisted = false;
    foreach (string kB in windowsUpdateExceptionKBList)
    { 
        if (update.Title.Contains(kB))
           {
              blacklisted = true;
              break;
           }
    }
    if (!blacklisted)
    {
         securityUpdatestoInstall.Add(update);
    }
 }

另请注意,您可以使用string.Contains,所以我也添加了它(并注意它区分大小写)。

于 2014-03-04T06:22:33.267 回答