溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

linq中怎么實(shí)現(xiàn)動(dòng)態(tài)排序

發(fā)布時(shí)間:2021-07-19 15:51:31 來(lái)源:億速云 閱讀:273 作者:Leah 欄目:編程語(yǔ)言

本篇文章為大家展示了linq中怎么實(shí)現(xiàn)動(dòng)態(tài)排序,內(nèi)容簡(jiǎn)明扼要并且容易理解,絕對(duì)能使你眼前一亮,通過(guò)這篇文章的詳細(xì)介紹希望你能有所收獲。

想實(shí)現(xiàn)linq動(dòng)態(tài)排序就是linq的order by 后跟動(dòng)態(tài)的函數(shù)可以用委托實(shí)現(xiàn),但是發(fā)現(xiàn)實(shí)現(xiàn)委托函數(shù)時(shí)候:

int testSelector(post p)  {     ret urn p.Uu;  }

這個(gè)返回類型受到了限制僅是相同類型的字段可以動(dòng)態(tài)排序是不是Funcselector 這個(gè)的實(shí)現(xiàn)我理解的有問(wèn)題 ?

public IEnumerable Sort(string userName, Func selector)        {            return from post in posts                   where post.UserName == userName                   orderby selector(post) descending                   select post;        }

這個(gè)函數(shù)的TKey限制只能是一種類型 ?有什么好的實(shí)現(xiàn)嗎?

linq動(dòng)態(tài)排序具體解決的代碼

public   class OrderBy  {     List posts = new List();    public List  GtePost()    {      for (int i = 0, j=1000; i < 1000 ; i++, j--)       {          post p = new post();          p.Ty = i;          p.Uu=j;          p.UserName = "1";          posts.Add(p);       }     return posts;    }       /**////    /// Func 委托的實(shí)現(xiàn)    ///   ///    ///  可以動(dòng)態(tài)設(shè)置排序的列 int testSelector(post p)  {      return p.Uu;  }   public  IEnumerable GetData()      {         GtePost();         return Sort<int>("", testSelector);      }  public IEnumerable Sort(string userName, Func<POST,< SPAN> TKey> selector)    {       return from post in posts       where post.UserName == userName       orderby selector(post) descending       select post;    }  }

linq動(dòng)態(tài)排序Code

void BindData()    {        OrderBy o = new OrderBy();                           post p=new post ();        this.dataGridView1.DataSource = o.GetData().ToList();                 }

上述內(nèi)容就是linq中怎么實(shí)現(xiàn)動(dòng)態(tài)排序,你們學(xué)到知識(shí)或技能了嗎?如果還想學(xué)到更多技能或者豐富自己的知識(shí)儲(chǔ)備,歡迎關(guān)注億速云行業(yè)資訊頻道。

向AI問(wèn)一下細(xì)節(jié)
AI