2016-12-20 14 views
1

異なるプロパティに基づいてレコードのリストをソートしてランク付けするシナリオがあります。基づいて:各オブジェクトには、総財産ともスコアと呼ばれる整数値のリスト、 モデルは複数のフィールドに基づいてオブジェクトをランク付けする

public class Routine 
{ 
    public string Title { get; set; } 

    public int Total { get; set; } 

    public List<int> Scores { get; set; } 
} 

私はレコードをランク​​付けしたいようなものです、まず

  • を持っています合計プロパティ
  • 第2の値:の最初の値に基づくプロパティ
  • その後は:スコアプロパティ
  • に第二の値に基づいており、その

にたとえば、私は、これらの3つのレコードを検討してください。任意のヘルプやアイデアのため

enter image description here

感謝。

+0

いいえ、私にとってThenByは、複数の値に基づいて並べ替えるために、必要に応じあなたは多くとして 'ThenBy'-句を追加することができます – ali

+1

スコアプロパティを必要とします。 –

+0

答えが必要でない場合は、モデルのコードを提供することもできますか? – demo

答えて

2

linqを使用すると、Orderby(降順)を使用した後、任意の数のThenBy(降順)節を連鎖させることができます。

 var soterdList= initialList.OrderByDescending(r => r.Total) 
      .ThenByDescending(r => r.Scores.FirstOrDefault()) 
      .ThenByDescending(r => r.Scores.Skip(1).FirstOrDefault()).ToList(); 
+0

2番目のプロパティは整数のリストなのでThenByは私にとっては役に立たないようです – ali

+0

@ali私はコードを更新しましたあなたのモデルに合った – Daniel

1

OrderByThenByを使用できます。あなたが降順たい場合にもOrderByDescendingを使用することができます

var ordered = items.OrderBy(x => x.TotalProperty).ThenBy(x => x.S1).ThenBy(x => x.S2); 

+0

2番目のプロパティは整数のリストなので、ThenByは私にとってはうまくいかないようです – ali

+0

整数リストはどういう意味ですか?質問では、1行に1の整数があります。あなたが意味するものを明確にしてください。 – CodingYoshi

+0

2番目のプロパティはスコアであり、質問を編集してモデルを追加します – ali

関連する問題