我想将多个字典(确切地说是 3 个)的值合并到一个列表中。我当前的解决方案使用 linq 首先组合字典,然后将值转换为列表。
private List<Part> AllParts()
{
return walls.Concat(floors)
.Concat(columns)
.ToDictionary(kvp => kvp.Key, kvp => kvp.Value)
.Values
.ToList();
}
首先合并列表似乎是多余的。我该如何改进?
最佳答案
您可以通过连接字典并选择值而不转换为字典来简化此代码:
return walls.Concat(floors)
.Concat(columns)
.Select(kvp => kvp.Value)
.ToList();
它看起来是最短且最易读的解决方案。您可以通过仅取值来避免连接您的集合:
return walls.Values
.Concat(floors.Values)
.Concat(columns.Values)
.ToList();
但是,我在这里没有看到任何可读性、可维护性或性能改进。
附言我假设您的词典中没有重复项。此代码将包含重复的值,而 ToDictionary
方法将在键重复时抛出异常。
关于c# - 将多个字典的值合并到一个列表中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39200900/