문제

항목(부모 우선)을 포함하는 IList가 있는데, 부모가 마지막에 추가되고 사용자가 가장 먼저 선택할 수 있도록 맨 위에 그려지도록 역순으로 다이어그램 문서에 추가해야 합니다.

가장 좋은 방법은 무엇입니까?내가 현재하고있는 것보다 더 나은/더 우아한 것 .. 아래에 게시하는 것 ..

도움이 되었습니까?

해결책

.NET 3.5가 있는 경우 LINQ의 Reverse?를 사용할 수 있습니까?

foreach(var item in obEvtArgs.NewItems.Reverse())
{
   ...
}

(일반 IList에 대해 이야기하고 있다고 가정)

다른 팁

님의 댓글을 토대로 데이비의 대답, 그리고 기슈의 원래 답변, 당신은 약한 유형의 캐스팅을 할 수 있습니다 System.Collections.IList 다음을 사용하여 일반 컬렉션에 System.Linq.Enumerable.Cast 확장 방법:

var reversedCollection = obEvtArgs.NewItems
  .Cast<IMySpecificObject>( )
  .Reverse( );

이렇게 하면 역방향 소음이 모두 제거됩니다. for 루프, 그리고 as 원본 컬렉션에서 강력한 형식의 개체를 가져오기 위해 캐스팅합니다.

NewItems가 내 목록입니다...그런데 이게 좀 어설프네요.

for(int iLooper = obEvtArgs.NewItems.Count-1; iLooper >= 0; iLooper--)
            {
                GoViewBoy.Document.Add(CreateNodeFor(obEvtArgs.NewItems[iLooper] as IMySpecificObject, obNextPos));
            }

LINQ가 필요하지 않습니다.

var reversed = new List<T>(original); // assuming original has type IList<T>
reversed.Reverse();
foreach (T e in reversed) {
  ...
}
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top