c# - List<T> 连接 'X' 个列表数量

标签 c# linq generics c#-3.0

例如,我有 5 个相同类型的列表。我可以简单地做吗

List<T> newset = List1.Concat(List2).Concat(List3).Concat(List4).....

最佳答案

你可以做到这一点(尽管最后你需要 .ToList())。

但是,生成单个列表并使用 AddRange 添加到每个列表中会(稍微)更有效。只需使用所有列表的总大小初始化列表,然后重复调用 AddRange。

你可能想考虑做这样的事情:

public List<T> ConcatMultiple<T>(this List<T> list, params[] ICollection<T> others)
{
    List<T> results = new List<T>(list.Count + others.Sum(i => i.Count));
    results.AddRange(list);
    foreach(var l in others)
        results.AddRange(l);
    return results;
}

然后通过以下方式调用:

List<MyClass> newset = List1.ConcatMultiple(List2, List3, List4);

关于c# - List<T> 连接 'X' 个列表数量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2357722/

相关文章:

c# - Azure 和本地开发之间的 EF 4.3 行为不同

c# - 将我的 SQL 查询转换为 c# linq/lambda。多参数GroupBy

Java泛型不可能赋值?

Java通过接口(interface)反射提取泛型类型参数

javascript - 通用日期时间格式

c# - 如何获取通过网络共享身份验证的用户的用户名

c# - 对集合进行排序并根据特定条件对结果进行排名

java - 从带有类型参数的类获取 .class

c# - 如何使用 Cairo-Sharp 将 Pixbuf 绘制到表面上?

c# - 如何合并两个 LINQ 查询但第二个查询需要更多字段