3

オブジェクトのリストがあります。次の行を記述して、このリストをコードで並べ替えます。

Result.Sort(delegate(Position p1, Position p2) { return p1.Code.CompareTo(p2.Code); });

しかし、この行を最初にコードで並べ替え、次に名前で並べ替えたいと思います。これを行うにはどうすればよいですか?

4

2 に答える 2

5

なぜ LINQ を使用しないのですか?

var ordered = list.OrderBy(x => x.Code).ThenBy(x => x.Name).ToList();
于 2012-10-21T09:39:02.193 に答える
3

LINQ なし:

Result.Sort(delegate(Position p1, Position p2) 
            { 
                var byCode = p1.Code.CompareTo(p2.Code); 
                return byCode == 0 ? p1.Name.CompareTo(p2.Name) : byCode; 
            });

または、比較子を使用した同じロジック:

Result.Sort(new PositionComparer());
class PositionComparer : IComparer<Position>
{
    public int Compare(Position p1, Position p2) 
    { 
        var byCode = p1.Code.CompareTo(p2.Code); 
        return byCode == 0 ? p1.Name.CompareTo(p2.Name) : byCode; 
    }
}
于 2012-10-21T10:03:13.610 に答える