public struct RegistryApp
{
public string VendorName;
public string Name;
public string Version;
}
我有两个List<RegistryApp>
,其中包含当前安装在 Windows 框中的所有应用程序。为什么是两个?好吧,我有一个列表来保存所有x86
应用程序,一个列表来保存所有应用x64
程序。
List<RegistryApp> x64Apps64List = new List<RegistryApp>();
List<RegistryApp> x64Apps32List = new List<RegistryApp>();
一旦这两个填充了从注册表中检索到的相应数据,我会尝试以下操作以确保没有重复项。这工作得体,List<string>
但不适用于List<RegistryApp>
.
List<RegistryApp> ListOfAllAppsInstalled = new List<RegistryApp>();
IEnumerable<RegistryApp> x86Apps = x64Apps32List.Except(x64Apps64List);
IEnumerable<RegistryApp> x64Apps = x64Apps64List.Except(x64Apps32List);
foreach (RegistryApp regitem in x86Apps)
{
if ((regitem.Name != null) &&
(regitem.Name.Length > 2) &&
(regitem.Name != ""))
{
ListOfAllAppsInstalled.Add(regitem);
}
}
foreach (RegistryApp regitem in x64Apps)
{
if ((regitem.Name != null) &&
(regitem.Name.Length > 2) &&
(regitem.Name != ""))
{
ListOfAllAppsInstalled.Add(regitem);
}
}
有什么办法可以解决这个问题吗?