如何按指定列表筛选Dictionary元素?解决==运算符类型不匹配错误
解决“运算符‘==’无法应用于‘string’和‘List’”的错误
你遇到的这个错误逻辑很清晰——你在尝试把单个字符串(k.ConversionTypeName)直接和一个字符串列表(conversionTypeNames)用==做相等判断,这在C#里是不允许的,因为两者的类型完全不匹配。
要实现从字典里筛选出ConversionTypeName存在于conversionTypeNames列表中的元素,你需要用集合包含判断来替代直接相等比较。下面是修正后的可运行代码:
List<string> conversionTypeNames = Conversion1List.Select(k => k.ConversionTypeName).Distinct().ToList(); var query = new GoogleAdWordsData_Dictionaries_Query(); var ConversionsDict = query.GetConversionDictionary(ClientID); // 使用Contains方法判断当前元素的ConversionTypeName是否在目标列表中 ConversionsDict = ConversionsDict.Where(k => conversionTypeNames.Contains(k.ConversionTypeName)).ToList();
额外性能优化建议
如果你的conversionTypeNames列表元素较多,建议把它转换成HashSet<string>,这样Contains方法的查找效率会从O(n)提升到O(1),处理大量数据时性能优势很明显:
// HashSet自动去重,无需额外调用Distinct() HashSet<string> conversionTypeNames = new HashSet<string>(Conversion1List.Select(k => k.ConversionTypeName)); var query = new GoogleAdWordsData_Dictionaries_Query(); var ConversionsDict = query.GetConversionDictionary(ClientID); ConversionsDict = ConversionsDict.Where(k => conversionTypeNames.Contains(k.ConversionTypeName)).ToList();
内容的提问来源于stack exchange,提问作者JonnyJon44
相关产品推荐
相关产品推荐

