您的位置:首页 > 其它

linq to list进行排序

2016-03-23 00:00 288 查看
第二种方法:linq to list进行排序
运用linq实现对list排序,在实体类定义的时候就不需用实现IComparable接口,调用方式如下:
private static void ReadT(string str) {
List<Info> infoList = new List<Info>();
infoList.Add(
new Info() { Id = 1, Name = "woft" });
infoList.Add(new Info() { Id=3,Name="rose"});
infoList.Add(new Info() { Id = 2, Name = "abc" });
Console.WriteLine("ReadT*********************");
IEnumerable<Info> query = null;
query = from items in infoList orderby items.Id select items;
foreach (var item in query)
{
Console.WriteLine(item.Id+":"+item.Name);
}
}


urList = (from u in urList
orderby u.toolingNo_C
select u).Skip(pageSize * (pageNum - 1)).Take(pageSize);

OrderBy 是排序(后面是条件)然后要查询所有的,在所有的数据中在查询你要分页的数据,skip是在分页在前有多少条数据,也就是在当前页数据之前的数据总和,(跳过序列中指定数量的元素,然后返回剩余的元素。)pageSize*(pageIndex-1),Take 是返回多少条数据,也就是pageSize!

很多学习Linq的朋友肯定有自己所不同的方法,考虑这个问题我所想到的是
用Take(),Skip(),TakeWhile(),SkipUntil()中的方法来实现
首先看Take()是否可用
Take方法的作用是从结果中取固定数量的值,
MydbDataContext mydb=new MydbDataContext("server=.;database=mydb");
var query=from p in mydb.Products
orderby p.id descending
select p;//取出Products中所用的项按降序排列
如果直接用take()
var q=query.take(n) 这样只能取出前条n记录,但是还是让我们看到了分页的曙光,还是还有个skip吗,skip可以取出除去满足条件的剩下的记录。如果我们要把数据以每页pagesize的数量来进行分页,很简单,很skip(pagersize*pagenum)然后在剩下的记录中take(pagesize)不就得到了想要的数据了么。

varq=query.skip(pagesize*pagenum).take(pagesize) 就这么简单。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: