[已解决问题] linq to sql 怎么实现动态排序?
提问时间: 2008-03-22 09:14
浏览:455 次
INQ TO SQL 如何实现动态排序?
比如我把LINQ TO SQL 获取的结果集绑定到ListView,然后点击ListView的某一列来排序。怎么实现?
提问者:FrancisLiu - 初学一级
所有回答(2)
这个例子是说使用动态查询,查询London的顾客并按ContactName排序,关于ListView控件使用参看MSDN,希望对你有帮助。 
ParameterExpression param = Expression.Parameter(typeof(Customer), "c");
Expression left = Expression.Property(param, typeof
(Customer).GetProperty("City"));
Expression right = Expression.Constant("London");
Expression filter = Expression.Equal(left, right);
Expression pred = Expression.Lambda(filter, param);
IQueryable custs = db.Customers;
Expression expr = Expression.Call(typeof(Queryable), "Where",
new Type[] { typeof(Customer) }, Expression.Constant(custs), pred);
expr = Expression.Call(typeof(Queryable), "OrderBy",
new Type[] { typeof(Customer), typeof(string) }, custs.Expression,
Expression.Lambda(Expression.Property(param, "ContactName"), param));
IQueryable<Customer> query = db.Customers.AsQueryable().
Provider.CreateQuery<Customer>(expr);


3个月前   回答者:李永京 - 菜鸟二级
楼上的好复杂,你可以这样写
var q= from p in db.products select p;
switch(orderyname){
case "id":
 q= q.OrderBy(t=>t.id);
//或者q= q.OrderByDescending(t=>t.id)//倒序
break;
case "name"
 q= q.OrderBy(t=>t.name);
//或者q= q.OrderByDescending(t=>t.name)//倒序
break;
}
3个月前   回答者:WOW玩家 - 菜鸟二级
评论
3个月前   FrancisLiu :
谢谢啦, 还是有点晕。我再继续研究
   您需要登录以后才能回答!
我的问题    我要提问


快到期问题

> 问题排行榜

有不合适内容,建议去除