2017-09-28 4 views
0

私はこのような非常に単純なコードを持っています。実行後、リストrArrayは変更されません。レベルに基づいてソートされているはずですが、そうではありません。何か案は?助けてください。ありがとう。これはMicrosoft C#WPFです。リストでOrderBy()が失敗する

private class RecordList 
    { 
     public string NodeID { get; set; } 
     public int Level { get; set; } 
     public RecordList(string theID, int theLevel) 
     { 
      this.NodeID = theID; 
      this.Level = theLevel; 
     } 
    } 

    private void Test() 
    { 
     List<RecordList> rArray = new List<RecordList>(); 
     rArray.Add(new RecordList("Consolidated", 0)); 
     rArray.Add(new RecordList("Large Volume", 2)); 
     rArray.Add(new RecordList("Small Volume", 2)); 
     rArray.Add(new RecordList("Detailed Record 1", 4)); 
     rArray.Add(new RecordList("Detailed Record 2", 4)); 
     rArray.Add(new RecordList("Midium Volume", 2)); 
     rArray.OrderBy(RecordList => RecordList.Level); 
    } 

答えて

3

この

rArray.OrderBy(RecordList => RecordList.Level)

あなたの配列は変更されません。新しいIEnumerableコレクションを作成します。あなたは、アレイに保存したい場合は は、私は次の作業を実行して、それを解決し

rArray = rArray.OrderBy(RecordList => RecordList.Level).ToList()

-1

ようsmtgを行う必要があります。つまり、OrderByメソッドはソースを直接変更するのではなく、何かを返します。

 IOrderedEnumerable<RecordList> aList = rArray.OrderBy(RecordList => RecordList.Level); 
     rArray = aList.ToList<RecordList>(); 
+0

tym32167さんのお返事ありがとうございます。私はあなたの返事を見る前に自分の決議を掲載しました。それは似ています。 –

+2

これは上の同じ答えであるようです。親切に@ tym32167答えを認識します。 –

+1

プラス彼は答えを最初に投稿したようだ、あなたが彼の答えを受け入れることができればいいだろう。 –

関連する問題