您的位置:首页 > 其它

linq动态排序解决方法

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

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

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

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

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动态排序解决方法的简单介绍。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: