詳細闡述linq動態排序
作者:佚名
linq動態排序不是很好實現的,很多開發者都被困在了這個方面,所以筆者今天分享一下自己的經驗,希望能給大家帶來幫助。
linq動態排序不是很好實現的,很多開發者都在這個方面有疑惑,所以筆者今天分享一下自己的經驗,希望能給大家帶來幫助。
想實現linq動態排序就是linq的order by 后跟動態的函數可以用委托實現,但是發現實現委托函數時候:
- int testSelector(post p)
- {
- ret urn p.Uu;
- }
這個返回類型受到了限制僅是相同類型的字段可以動態排序是不是Func
- public IEnumerable
Sort string userName, Func( - selector)
- {
- return from post in posts
- where post.UserName == userName
- orderby selector(post) descending
- select post;
- }
這個函數的TKey限制只能是一種類型 ?有什么好的實現嗎?
linq動態排序具體解決的代碼
- 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
委托的實現 - ///
- ///
- ///
可以動態設置排序的列 - int testSelector(post p)
- {
- return p.Uu;
- }
- public IEnumerable
GetData() - {
- GtePost();
- return Sort<int>("", testSelector);
- }
- public IEnumerable
Sort string userName, Func( - TKey> selector)
- {
- return from post in posts
- where post.UserName == userName
- orderby selector(post) descending
- select post;
- }
- }
linq動態排序Code
- void BindData()
- {
- OrderBy o = new OrderBy();
- post p=new post ();
- this.dataGridView1.DataSource = o.GetData().ToList
(); - }
以上就是對linq動態排序解決方法的簡單介紹。
【編輯推薦】
責任編輯:阡陌
來源:
博客園