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动态排序解决方法的简单介绍。
【编辑推荐】