Lambda/Linq to Objects を使用してリストをソートする 質問する

Lambda/Linq to Objects を使用してリストをソートする 質問する

文字列に「プロパティによる並べ替え」の名前があります。オブジェクトのリストを並べ替えるには、Lambda/Linq を使用する必要があります。

元:

public class Employee
{
  public string FirstName {set; get;}
  public string LastName {set; get;}
  public DateTime DOB {set; get;}
}


public void Sort(ref List<Employee> list, string sortBy, string sortDirection)
{
  //Example data:
  //sortBy = "FirstName"
  //sortDirection = "ASC" or "DESC"

  if (sortBy == "FirstName")
  {
    list = list.OrderBy(x => x.FirstName).toList();    
  }

}
  1. フィールド名(sortBy)をチェックするためにif文をたくさん使う代わりに、よりクリーンなソート方法はありますか?
  2. ソートはデータ型を認識しますか?

ベストアンサー1

これは次のように行うことができます

list.Sort( (emp1,emp2)=>emp1.FirstName.CompareTo(emp2.FirstName) );

.NETフレームワークはラムダ(emp1,emp2)=>intComparer<Employee>.

これには、厳密に型指定できるという利点があります。

降順/逆順が必要な場合は、パラメータを反転します。

list.Sort( (emp1,emp2)=>emp2.FirstName.CompareTo(emp1.FirstName) );

おすすめ記事