亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

使用Lambda / Linq對對象排序列表

使用Lambda / Linq對對象排序列表

慕容708150 2019-12-10 13:08:50
我在字符串中有“按屬性排序”的名稱。我將需要使用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>.


這具有強類型輸入的優勢。



查看完整回答
反對 回復 2019-12-11
?
寶慕林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);



查看完整回答
反對 回復 2019-12-11
  • 3 回答
  • 0 關注
  • 306 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號