将多个列表添加到一个列表中

时间:2015-05-20 20:02:31

标签: c# linq list design-patterns

我有多个函数可以返回一个对象列表。如何将它们添加到一个列表中。

var List1 = GetList1().RunFilter1();
var List2 = GetList2();

AddRange()函数变得非常混乱。

List1.AddRange(List2.AddRange(List3.AddRange(List4.AddRange(...); 

是否有一种模式我可以使用它会更容易。我还有适用于某些列表的扩展方法(过滤器)。我根据要求进行交换。 像这样:

var CombinedList = GetAllLists(GetList1().RunFilter1(),
                               GetList2(),
                               GetList3().RunFilter2(),
                               GetList4() ...);

请记住,正在获取的GetList()函数可能会更改。

感谢您的帮助!

2 个答案:

答案 0 :(得分:2)

您可以先将所有列表插入另一个列表中:

var temp = new List<T>
{
    GetList1().RunFilter1(),
    GetList2(),
    GetList3().RunFilter2(),
    GetList4() 
};

然后使用SelectMany方法展平此列表。

var combined = temp.SelectMany(item=>item).ToList();

答案 1 :(得分:2)

您可以使用一些Linq扩展来帮助您使用格式

var joined = GetList1()
    .Concat(GetList2())
    .Concat(GetList3().RunFilter())
    ...
    ;