2009-03-06 19 views
0

リストソートの質問があります。私は#3.0と、このような一般的なリスト構造cを使用しています:親リスト内のリスト<>のメンバーの値をソートする方法リスト

public class myObject 
{ 
    public int ID { get; set; } 
    public List<mySetting> setting { get; set; } 
} 

public class mySetting 
{ 
    public int ID { get; set; } 
    public string Name { get; set; } 
    public string Value { get; set; } // sort on this! 
} 

このような構造で、私はLINQクエリをmyObjectというの一覧を充填しています。私は今、何をしたいか

List<myObject> lmo = new List<myObject>(); 
lmo.SomeFillOperation(): 

は、ソート、個々の<mySetting>[].Value値の全体List<myObject>です。編集:(これは、例えば、mySetting [3] .Valueの1つのキー付きインデックスでソートされます。私はSomeFillOperation()でおそらくそれをやり遂げることができるが、リストが形成されたらそれをやりたいと思う。

これを行う方法はありますか?あなたが見た良い例はありますか?前もって感謝します!

+0

あなたはのリストを持っています。 myObjectが別のものの前に来るのか後に来るのかを決めるのはどちらですか? –

+0

申し訳ありませんが、必要な質問、ありがとうTom:リスト mySetting [3]など)内の1つのキー付きインデックスでソートされます。 –

答えて

5

まあ、List<T>は、それを所定の場所でソートしたい場合はSortの方法があります。また、LINQのOrderByメソッドを使用することもできます。 OrderBySortよりも少し簡単です:

var sorted = lmo.OrderBy(x => x.Value); 

それでもSortあまりにも悪いことではありません。

lmo.Sort((x, y) => x.Value.CompareTo(y.Value)); 

EDIT:質問へのコメントを読んでたので、私はもはや質問を理解していません!私は夕食を持っていながら、あなたが3.0を使用しているので、LINQを使用し、...潜在的に有用なプレースホルダとして、ここで

0

をこの答えを残して:もちろん

var newList = lmo.OrderBy(i => i.Value); 

var newList = lmo.OrderByDescending(i => i.Value); 
1
int MyObjectComparison(MyObject x, MyObject y) 
{ 
    return x.setting[0].Value.CompareTo(y.setting[0].Value); 
} 

lmo.Sort(MyObjectComparison); 

、これは、設定の最初の要素のValueを使用することを前提としています(そして、その設定は、少なくとも1つの要素を持つことを前提としています)。より多くの情報が与えられれば、より少ない仮定を伴う解が出てくるだろう。

関連する問題