Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 将多个列表添加到一个列表中_C#_Linq_List_Design Patterns - Fatal编程技术网

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

C# 将多个列表添加到一个列表中,c#,linq,list,design-patterns,C#,Linq,List,Design Patterns,我有多个返回对象列表的函数。如何将它们添加到一个列表中 var List1 = GetList1().RunFilter1(); var List2 = GetList2(); AddRange()函数变得非常混乱 List1.AddRange(List2.AddRange(List3.AddRange(List4.AddRange(...); 是否有一个模式,我可以使用它将更容易。我还有一些扩展方法(过滤器)可以应用于某些列表。我根据需要交换。 大概是这样的: var CombinedL

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

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()函数可能会更改


谢谢你的帮助

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

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

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

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

您可以使用一些Linq扩展来帮助您稍微了解一下格式

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

您可以使用一些Linq扩展来帮助您稍微了解一下格式

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

可能是
Append
方法。。。最后,你需要一个列表还是一个IEnumerable?如果你需要一张单子,德勒的答案会告诉你。如果您只需要一个IEnumerable,但实际上不需要将它们合并到一个列表中,那么Christos的解决方案就提供了这一点。如果您不需要实际的单个列表,那么Christos解决方案可以避免创建该列表,并且速度更快。。。最后,你需要一个列表还是一个IEnumerable?如果你需要一张单子,德勒的答案会告诉你。如果您只需要一个IEnumerable,但实际上不需要将它们合并到一个列表中,那么Christos的解决方案就提供了这一点。如果您不需要实际的单个列表,则Christos解决方案可以避免创建该列表,而且速度更快。使用SelectMany()可以生成IEnumerableT,而无需创建新列表,这是高效的。使用SelectMany()可以生成IEnumerableT,而无需创建新列表,这是高效的。效果非常好。谢谢工作完美。谢谢