详细阐述linq动态排序

开发 后端
linq动态排序不是很好实现的,很多开发者都被困在了这个方面,所以笔者今天分享一下自己的经验,希望能给大家带来帮助。

linq动态排序不是很好实现的,很多开发者都在这个方面有疑惑,所以笔者今天分享一下自己的经验,希望能给大家带来帮助。

想实现linq动态排序就是linq的order by 后跟动态的函数可以用委托实现,但是发现实现委托函数时候:

  1. int testSelector(post p)  
  2. {  
  3.    ret urn p.Uu;  
  4. }  

这个返回类型受到了限制仅是相同类型的字段可以动态排序是不是Func selector 这个的实现我理解的有问题 ?

  1. public IEnumerable Sort(string userName, Func 
  2. selector)  
  3.       {  
  4.           return from post in posts  
  5.                  where post.UserName == userName  
  6.                  orderby selector(post) descending  
  7.                  select post;  
  8.       }   

这个函数的TKey限制只能是一种类型 ?有什么好的实现吗?

linq动态排序具体解决的代码

  1. public   class OrderBy  
  2. {   
  3.   List posts = new List();  
  4.   public List  GtePost()  
  5.   {  
  6.     for (int i = 0, j=1000; i < 1000 ; i++, j--)  
  7.      {  
  8.         post p = new post();  
  9.         p.Ty = i;  
  10.         p.Uu=j;  
  11.         p.UserName = "1";  
  12.         posts.Add(p);  
  13.      }  
  14.    return posts;  
  15.   }  
  16.      
  17. /**////   
  18.   /// Func 委托的实现  
  19.   ///   
  20.  ///   
  21.   ///  可以动态设置排序的列  
  22. int testSelector(post p)  
  23. {  
  24.     return p.Uu;  
  25. }  
  26.  public  IEnumerable GetData()  
  27.     {  
  28.        GtePost();  
  29.        return Sort<int>("", testSelector);  
  30.     }  
  31. public IEnumerable Sort(string userName, Func
  32.  TKey> selector)  
  33.   {  
  34.      return from post in posts  
  35.      where post.UserName == userName  
  36.      orderby selector(post) descending  
  37.      select post;  
  38.   }  
  39. }  

linq动态排序Code

  1. void BindData()  
  2.   {  
  3.       OrderBy o = new OrderBy();                     
  4.       post p=new post ();  
  5.       this.dataGridView1.DataSource = o.GetData().ToList();               
  6.   } 

以上就是对linq动态排序解决方法的简单介绍。

【编辑推荐】

  1. 详谈Linq查询结果分析的方法
  2. 简简单单学习Linq查询语法
  3. 详细阐述Linq插入数据的操作方法
  4. 浅析Linq插入数据的实现方法
  5. 简单解决Linq多条件组合问题
责任编辑:阡陌 来源: 博客园
相关推荐

2009-09-15 23:21:17

Linq插入数据

2009-09-18 09:25:06

LINQ Framew

2009-09-14 15:15:45

LINQ技术

2009-09-08 13:07:15

介绍Linq to S

2009-09-15 13:59:18

LINQ to Dat

2009-09-14 14:20:36

LINQ ORM

2009-09-14 14:58:52

LINQ to XML

2009-09-14 13:14:49

LINQ序列

2009-09-15 13:20:34

LINQ DataCo

2010-05-05 18:44:27

服务器负载均衡

2009-09-14 14:17:11

Linq异常处理

2009-09-14 16:33:55

LINQ To XML

2009-09-15 16:44:44

Linq排序

2009-12-17 09:56:26

Linux添加驱动模块

2009-09-15 10:16:01

LINQ动态查询

2009-09-18 15:15:12

LINQ to SQL

2009-09-17 16:46:34

Linq to sql

2009-09-15 09:19:22

linq动态条件

2010-02-06 09:45:49

Android属性

2010-01-07 17:55:44

Linux动态库
点赞
收藏

51CTO技术栈公众号