C# ToList 性能和替代方法

标签 c#

我有一本大字典和一个列表 (myList)。仅当我的字典中有一个具有相同标题的项目时,我才想将这些项目保留在 myList 中。问题是 titleList 的初始化需要很长时间(2-3 秒)。有没有更好的方法来做到这一点?

var dictionary = r.MyFunction.Where(a condition);
var titleList = dictionary.Select(x => x.Value.Title).ToList()

myList = productsTemp.Where(x => titleList.Contains(x.Title)).ToList();

最佳答案

嗯,HashSets 可以优化字符串的不同,因为列表不需要排序 Getting unique items from a list

至于代码,它应该像这样工作:

    var items = r.MyFunction.Where(a condition).Select(p => p.Value.Title);
    var titleList = new HashSet<string>(items);
    myList = productsTemp.Where(x => titleList.Contains(x.Title)).ToList();

希望这对您有所帮助。

编辑:构造函数调用现在在外面。

关于C# ToList 性能和替代方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31949223/

相关文章:

c# - 如何在 c# 中使用静态全局定义的变量?

c# - 在运行时加载带有子文件夹引用的程序集

c# - 如何为 DataGridComboBoxColumn WPF 绑定(bind)数组

c# - convert.ToString(C0) 的行为如何?

c# - 在 asp.net mvc 3 中管理每个 session 和请求的 AutoFac 生命周期范围

c# - 从 ListView 中获取子项

c# - 反序列化实现 IEnumerable 的类

c# - 为什么转换器没有被调用

c# - 从逗号分隔的属性值创建新元素

c# - 使用c#编写adobe插件