文字列に「プロパティによる並べ替え」の名前があります。オブジェクトのリストを並べ替えるには、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();
}
}
- フィールド名(sortBy)をチェックするためにif文をたくさん使う代わりに、よりクリーンなソート方法はありますか?
- ソートはデータ型を認識しますか?
ベストアンサー1
これは次のように行うことができます
list.Sort( (emp1,emp2)=>emp1.FirstName.CompareTo(emp2.FirstName) );
.NETフレームワークはラムダ(emp1,emp2)=>int
をComparer<Employee>.
これには、厳密に型指定できるという利点があります。
降順/逆順が必要な場合は、パラメータを反転します。
list.Sort( (emp1,emp2)=>emp2.FirstName.CompareTo(emp1.FirstName) );