C# のオブジェクトのリストを、1 つのフィールドだけでなく、複数のフィールドで順序付けたいと考えています。たとえば、2 つの属性 A と B を持つ X というクラスがあり、次の順序でオブジェクトがあるとします。
オブジェクト1 => A = "a"、B = "h"
オブジェクト2 => A = "a"、B = "c"
オブジェクト3 => A = "b"、B = "x"
オブジェクト4 => A = "b"、B = "b"
まず A 属性でリストを並べ替え、それらが等しい場合は B 要素で並べ替えたいので、順序は次のようになります。
「あ」「は」
「ち」「ば」
「ば」「ば」
「ば」「×」
私の知る限り、OrderBy メソッドは 1 つのパラメータで順序付けます。
質問: C# リストを複数のフィールドで並べ替えるにはどうすればよいでしょうか?
ベストアンサー1
使用ThenBy
:
var orderedCustomers = Customer.OrderBy(c => c.LastName).ThenBy(c => c.FirstName)
MSDN を参照してください:http://msdn.microsoft.com/en-us/library/bb549422.aspx