linq 排序

动态排序 不过不完善

排序class

ContractedBlock.gif ExpandedBlockStart.gif Code
 1 public   class OrderBy
 2ExpandedBlockStart.gifContractedBlock.gif    
 3      List<post> posts = new List<post>();
 4
 5      public List<post >  GtePost()
 6ExpandedSubBlockStart.gifContractedSubBlock.gif      {
 7
 8          for (int i = 0, j=1000; i < 1000 ; i++, j--)
 9ExpandedSubBlockStart.gifContractedSubBlock.gif          {
10              post p = new post();
11              p.Ty = i;
12              p.Uu=j;
13              p.UserName = "1";
14              posts.Add(p);
15          }

16          return posts;
17
18      }

19        
20ExpandedSubBlockStart.gifContractedSubBlock.gif      /**//// <summary>
21      /// Func<post, TKey> 委托的实现
22      /// </summar排序的列y>
23      /// <param name="p"></param>
24      /// <returns> 可以动态设置排序的列</returns>

25      int testSelector(post p)
26ExpandedSubBlockStart.gifContractedSubBlock.gif      {
27          return p.Uu;
28      }

29     public  IEnumerable<post> GetData()
30ExpandedSubBlockStart.gifContractedSubBlock.gif      {
31          GtePost();
32          return Sort<int>("", testSelector);
33      }

34
35      public IEnumerable<post> Sort<TKey>(string userName, Func<post, TKey> selector)
36ExpandedSubBlockStart.gifContractedSubBlock.gif      {
37          return from post in posts
38                 where post.UserName == userName
39                 orderby selector(post) descending
40                 select post;
41      }

42    }

 

UI:

ContractedBlock.gif ExpandedBlockStart.gif Code
 1   void BindData()
 2ExpandedBlockStart.gifContractedBlock.gif        {
 3           
 4            OrderBy o = new OrderBy();      
 5                 
 6            post p=new post ();
 7
 8            this.dataGridView1.DataSource = o.GetData().ToList<post>();
 9           
10                
11        }

 

遗留问题:

排序对排序字段类型的依赖?委托函数的返回值 int testSelector(post p) 受返回类型的依赖 不能动态的设置返回类型吧

   

转载于:https://www.cnblogs.com/pbc1984/archive/2008/10/12/1309284.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值