문제

나는 반환하는 함수 Collection<string>, 이며,그 자체를 재귀적으로 결국 하나를 반환에 큰 Collection<string>.

지금,나는 그냥 무엇인지 궁금 최고의 접근 방식을 병합하는 목? Collection.CopyTo() 만 복사본을 string[],사용 foreach() 루프는 것 같아 기분이 비효율적이다.그러나,이후 나는 또한 필터링의 중복,나는 같은 느낌이 나는 겁니다 foreach 는 전화 Contains()Collection.

궁금,거기에 더 많은 효율적인 방법을 재귀적 기능 목록을 반환하는 문자열이 중복되지 않?나는 사용하지 않는 Collection, 수 꽤 많은 모든 적절한 데이터를 입력합니다.

만 제외,나는 바인딩을 Visual Studio2005.net3.0,그래서 LINQ.

편집: 을 명확히:이 함수는 사용자의 활성 디렉토리에서 보이 직접 보고 사용자는 다음을 재귀적으로 외모에서 직접 보고서의 모든 사용자.그래서 그 결과 모든 사용자의 목록에 있는"명령을 체인"지정된 사용자.이 실행되는 순간 20 초 동안에 대한 일부 사용자,나을 향상시킬 수있는 방법을 찾고 있습니다.캐싱에 대한 결과는 24 시간은 또한에서 내 목록 btw., 하지만 보고 싶어 그것을 개선하는 방법을 적용하기 전에 캐싱이 가능합니다.

도움이 되었습니까?

해결책

를 사용하는 경우 목록<>사용할 수 있습니다.AddRange 추가 중 하나로 목록을 다른 목록입니다.

할 수 있습니다 또는 사용수익 반환을 결합하 목록 즉석에서 다음과 같다:

public IEnumerable<string> Combine(IEnumerable<string> col1, IEnumerable<string> col2)
{
    foreach(string item in col1)
        yield return item;

    foreach(string item in col2)
        yield return item;
}

다른 팁

할 수 있는 살펴보 Iesi.컬렉션장 일반적인 Iesi.컬렉션 (기 때문에 첫 번째 판에서 만들어졌 1.1 없을 때 제네릭직).

Extended Iesi 는 ISet 클래스는 행위대로 정확하게 HashSet:용에 독특한 구성원과 중복을 허용하지 않.

멋진 일에 대한 Iesi 는 그것이 설정한 운영자는 대신 방법을 병합하는 컬렉션은,그래서 당신은 당신 사이의 선택의 여지가 연합(|),교차로(&),OR(^)이런 것들도 있습니다.

나는 생각한 HashSet<T> 큰 도움이됩니다.

HashSet<T> 제공하는 클래스 높은 성능을 설정 작업입니다.정 은 컬렉션을 포함하지 않는 중복된 요소,그리고 그의 요소 는 특별한 순서없이.

단지 그것에 항목을 추가하며 그런 다음 사용하 CopyTo.


업데이트: HashSet<T> 입니다.Net3.5

어쩌면 당신은 사용할 수 있습니다 Dictionary<TKey, TValue>.설정에 중복되는 핵심 사를 인상하지 않는 예외는 아니다.

를 전달할 수 있는 모음으로 당신은 방법에 의해서 참조할 수 있도록 단지 그것에 항목을 추가하는 방법을 반환하는 아무것도.이것은 어떤 모습일 수 있습니다 다음과 같았으면 그것은 c#.

class Program
{
    static void Main(string[] args)
    {
        Collection<string> myitems = new Collection<string>();
        myMthod(ref myitems);
        Console.WriteLine(myitems.Count.ToString());
        Console.ReadLine();
    }

    static void myMthod(ref Collection<string> myitems)
    {
        myitems.Add("string");
        if(myitems.Count <5)
            myMthod(ref myitems);
    }
}

에 의해 명시된 바와 같@Zooba 에 의해 전달 ref 필요하지 않은 경우,여기에 당신은 값으로 전달하면 그것도 작동합니다.

로 병합하는 간:

궁금,거기에 더 많은 효율 는 방법을 재귀적하는 기능 의 목록을 반환없이 문자열 중복?나는 사용하지 않는 컬렉션할 수 있는 거의 모든 적합한 데이터를 입력합니다.

귀하의 기능을 조립하는 반환 값이 오른쪽?를 분할하면 공급한 목록에서 상반기,호출하여 각자 다시(두 번지)다음 합병 그 결과입니다.

는 동안 병합하는 단계,왜 그냥 확인에 추가하기 전에 각 문자열은 결과는?는 경우 그것은 이미 있 건너뛸 수 있습니다.

고 가정하고 작업으로 정렬된 목록은 물론이다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top