C# 检查项目是否包含在列表中

C# 检查项目是否包含在列表中,c#,list,linq,C#,List,Linq,我有一个已安装程序的列表 使用Debug.writeLine,我可以在输出中看到不一致项。 结果。PackageName它可以是Discrod、Discord PTB或Discord Canary foreach (var installedItem in _installedApps) { if (installedItem.DisplayName.Contains("Discord")) { Debug.WriteLine(installedItem.Di

我有一个已安装程序的列表 使用Debug.writeLine,我可以在输出中看到不一致项。 结果。PackageName它可以是Discrod、Discord PTB或Discord Canary

foreach (var installedItem in _installedApps)
{
  if (installedItem.DisplayName.Contains("Discord"))
  {
    Debug.WriteLine(installedItem.DisplayName);
    Debug.WriteLine(result.PackageName);
  }

  if (installedItem.DisplayName.Trim().Contains(result.PackageName.Trim()))
  {
    isInstalled = true;
  }
  else
  {
   isInstalled = false;
  }
}
但是代码不起作用,并且总是返回false

更新:

如果我使用以下代码

var installedStatus = _installedApps.Where(x => x.DisplayName != null && result.PackageName != null && x.DisplayName.Contains(result.PackageName, StringComparison.OrdinalIgnoreCase)).Any();
                                var installedStatus = _installedApps.Where(x => x.DisplayName != null && result.PackageName != null && result.PackageName.Contains(x.DisplayName, StringComparison.OrdinalIgnoreCase)).Select(x => x.Version);
在已安装应用程序列表中,只有一个项目名为Discord PTB,也在循环中,即PackageName Discrood、Discrood PTB或Discrood Canary

我有一个错误的报告,两个版本都安装了,只有PTB应该有一个安装报告

但是如果我使用下面的代码

var installedStatus = _installedApps.Where(x => x.DisplayName != null && result.PackageName != null && x.DisplayName.Contains(result.PackageName, StringComparison.OrdinalIgnoreCase)).Any();
                                var installedStatus = _installedApps.Where(x => x.DisplayName != null && result.PackageName != null && result.PackageName.Contains(x.DisplayName, StringComparison.OrdinalIgnoreCase)).Select(x => x.Version);

我有正确的报告,但问题是没有检测到其他程序

这不起作用,因为
已安装
正在通过不断迭代进行设置。
因此,最后一个installedItem可以将该值设置为false。
本质上,这是已安装的
仅与最后一项相关。 如果要使用此代码,只需删除else

如果您想使用linq,我会这样做

isInstalled = _installedApps.Any(i=>i.DisplayName.Trim().Contains(result.PackageName.Trim()))

调试应该向您展示它失败的地方,并且您应该了解它失败的原因。应该比让我们做猜测工作快得多。在比较管柱时,您可能遇到套管问题。Contains有第二个StringComparison参数来控制如何比较字符串。老实说,我不太理解您的更新,您是说您错过了调试。WriteLine吗?谢谢,我更新了我的问题。您能看一下吗?