1. ホーム
  2. c#

[解決済み] LINQ OrderBy with more than one フィールド

2023-03-05 14:24:24

質問

2つのフィールドでソートする必要があるリストがあります。 LINQでOrderByを使用してみましたが、1つのフィールドしか指定できません。 私はリストが最初のフィールドでソートされ、その後、最初のフィールドに重複がある場合は、2番目のフィールドでソートされることを期待しています。

例えば、私は結果をこのようにしたいのです(姓の次に名でソートされます)。

  • アダムズ, ジョン
  • スミス ジェームズ
  • スミス,ピーター
  • トンプソン,フレッド

を使用することができることを確認しました。 SQL のような構文でこれを実現することができます を使用することができますが、私はOrderByメソッドでそれを行う方法を探しています。

IList<Person> listOfPeople = /*The list is filled somehow.*/
IEnumerable<Person> sortedListOfPeople = listOfPeople.OrderBy(aPerson => aPerson.LastName, aPerson.FirstName); //This doesn't work.

どのように解決するのですか?

あなたは ThenBy :

listOfPeople.OrderBy(person => person.LastName)
            .ThenBy(person => person.FirstName)