我在字符串中有“按屬性排序”的名稱。我將需要使用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(); }}與其使用大量的ifs來檢查字段名(sortBy),還沒有一種更干凈的方式來進行排序是否了解數據類型?
3 回答

揚帆大魚
TA貢獻1799條經驗 獲得超9個贊
可以這樣做
list.Sort( (emp1,emp2)=>emp1.FirstName.CompareTo(emp2.FirstName) );
.NET框架將lambda轉換(emp1,emp2)=>int為Comparer<Employee>.
這具有強類型輸入的優勢。

寶慕林4294392
TA貢獻2021條經驗 獲得超8個贊
您可以做的一件事就是更改,Sort以便更好地利用lambda。
public enum SortDirection { Ascending, Descending }
public void Sort<TKey>(ref List<Employee> list,
Func<Employee, TKey> sorter, SortDirection direction)
{
if (direction == SortDirection.Ascending)
list = list.OrderBy(sorter);
else
list = list.OrderByDescending(sorter);
}
現在,您可以指定在調用Sort方法時要排序的字段。
Sort(ref employees, e => e.DOB, SortDirection.Descending);
添加回答
舉報
0/150
提交
取消