2013-01-04 2 views
114

IEnumerable<T>의 두 인스턴스 (동일한 T 포함)가 있습니다. 두 인스턴스의 연결 인 IEnumerable<T>의 새 인스턴스를 원합니다.두 개의 IEnumerable <T>을 연결하여 새 IEnumerable <T>에 연결하는 방법?

.NET에서 빌드를 수행하는 방법이 있습니까? 아니면 직접 작성해야합니까?

+9

http://code.msdn.microsoft.com/101-LINQ-Samples-3fb9811b에 북마크하고 싶을 수도 있습니다. –

+0

관련하여 도움이되는 경우 : [여러 요소 모음을 결합하는 우아한 방법?] (http://stackoverflow.com/questions/4493858/elegant-way-to-combine-multiple-collections-of-elements) – nawfal

답변

189

예, 객체에 LINQ는 Enumerable.Concat 이것을 지원

var together = first.Concat(second); 
+0

언제나 확장 메서드를 찾는 것을 잊지, 텍사스. –

+9

@SamuelRossille 또한 수행하고자하는 작업의 이름이 정확히 무엇인지 모르는 경우 닫을 가능성이 높다는 사실을 잊지 마십시오. IntelliSense를 항상 찾아보십시오. 많이 배웁니다. –

+2

두 번째 = 처음으로하는 것이 좋지 않습니까. 콩코드 (초)? 동시성 문제가 있습니까? – user2934433

4

당신은 솔루션에 대한 코드 아래 사용할 수 있습니다 : -

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); 
    } 
} 
2
//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); 
} 
12

Concat 방법은 어느 구현하는 객체를 반환합니다 IEnumerable<T> 열거 자 (enumerator)가 전달 된 두 개의 열거 가능 항목 (A 및 B라고 함)을 순서대로 사용하려고하는 객체 (Cat이라고 함)를 반환함으로써. 전달 된 enumerables가 Cat의 수명 동안 변경되지 않고 부작용없이 읽을 수있는 시퀀스를 나타내는 경우 Cat을 직접 사용할 수 있습니다. 그렇지 않은 경우 ToList()Cat으로 호출하고 그 결과로 List<T> (A 및 B 내용의 스냅 샷을 나타냄)을 사용하는 것이 좋습니다.

일부 열거자는 열거 시작시 스냅 샷을 만들고 열거 중에 컬렉션이 수정되면 해당 스냅 샷의 데이터를 반환합니다. B가 그러한 열거 형이면, Cat이 A의 끝에 도달하기 전에 발생하는 B에 대한 모든 변경 사항은 Cat의 열거 형에 표시되지만 그 후에 발생하는 변경 사항은 Cat의 열거 형에 표시되지 않습니다. 이러한 의미는 혼동을 야기 할 수 있습니다. Cat의 스냅 샷을 작성하면 이러한 문제를 피할 수 있습니다.

관련 문제