2009-07-08 5 views
1

LinqをXMLに使用してソートされたリストを出力したいのですが、各要素に値とリストのインデックスを含める必要があります。私はIDXを計算するかどうかはわかりませんLinqでインデックスを生成する

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

:私はこの(XMLのものが出てストライピングされた)のような何かをしたいと思いますつまり

これは可能でしょうか、または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

私はそれがクエリ構文でそれを達成するのは簡単だとは思いません。しかし、ラムダスタイルのクエリアプローチを使用する場合、インデックスを第2パラメータとして渡すselectのオーバーロードで実行できます。

var r = Sample.OrderBy(x => x).Select((o,i) => new { obj=o, idx=i}); 
関連する問題