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,而无需创建新列表,这是高效的。效果非常好。谢谢工作完美。谢谢