如何将两个IEnumerable <T>连接成一个新的IEnumerable <T>?

我有两个IEnumerable<T>实例(与T相同)。 我想要一个IEnumerable<T>的新实例,它是两者的连接。

在.Net中是否有一个内置的方法,或者我必须自己写?

是的,LINQ to Objects支持这个与Enumerable.Concat

 var together = first.Concat(second); 

Concat方法将返回一个实现IEnumerable<T>的对象,方法是返回一个对象(称为Cat),该对象的枚举器将尝试按顺序使用两个传入的可枚举项(称为A和B)。 如果传入的枚举值表示在Cat的生存期内不会改变的序列,并且可以从没有副作用的地方读取,那么可以直接使用Cat。 否则,在Cat上调用ToList()并使用生成的List<T> (它将表示A和B的内容的快照ToList()可能是一个好主意。

枚举开始时,一些枚举可以创build一个快照,如果在枚举过程中修改了集合,将会从该快照返回数据。 如果B是可枚举的,那么在Cat到达A的末尾之前发生的对B的任何改变都将显示在Cat的枚举中,但是之后发生的改变将不会被显示。 这样的语义可能会令人困惑; 抓住猫的快照可以避免这样的问题。

您可以使用下面的代码为您的解决scheme: –

 public void Linq94() { int[] numbersA = { 0, 2, 4, 5, 6, 8, 9 }; int[] numbersB = { 1, 3, 5, 7, 8 }; var allNumbers = numbersA.Concat(numbersB); Console.WriteLine("All numbers from both arrays:"); foreach (var n in allNumbers) { Console.WriteLine(n); } } 
 //The answare i was looking for when searching public void Answer() { IEnumerable<YourClass> first = this.GetFirstIEnumerableList(); //Assign to empty list so we can use later IEnumerable<YourClass> second = new List<YourClass>(); if (IwantToUseSecondList) { second = this.GetSecondIEnumerableList(); } IEnumerable<SchemapassgruppData> concatedList = first.Concat(second); }