2009-07-08 2 views
1

Linq를 XML로 사용하여 정렬 된 목록을 출력하고 싶습니다. 각 요소에는 해당 목록에 값과 인덱스가 있어야합니다. 나는 같은 것을 할 싶습니다 즉 (XML 물건이 밖으로 스트라이프되었다)에서Linq에서 인덱스 생성

:

var Sample = new[] { "4", "3", "2", "1" }.AsQueryable(); 
var r = (from o in Sample orderby o select new {obj=o, idx=?}); 

나는 IDX을 계산하는 방법을 모르겠어요.

foreach 루프를 사용할 수 있습니까?

답변

2

당신은 foreach 루프를 사용할 수 있습니다, 또는 당신이 서명 선택의 과부하를 사용할 수 있습니다

public static IEnumerable<TResult> Select<TSource, TResult>(
    this IEnumerable<TSource> source, 
    Func<TSource, int, TResult> selector 
) 

은 선택의이 버전에 열거 항목의 인덱스를 전달합니다.

당신은 이런 식으로 부를 것이다 :

var Sample = new[] { "4", "3", "2", "1" }; 
var r = Sample.OrderBy(t => t).Select((t, i) => new {obj = t, idx = i}); 
1

나는 쿼리 구문을 사용하여 그것을 달성하기 위해 쉽게 생각하지 않는다. 그러나 람다 스타일 쿼리 접근법을 사용하는 경우 두 번째 매개 변수로 인덱스를 전달하는 select의 오버로드로 수행 할 수 있습니다.

var r = Sample.OrderBy(x => x).Select((o,i) => new { obj=o, idx=i}); 
관련 문제