LINQ分页和排序,skip和Take 用法
LINQ分页和排序,skip和Take 用法
dbconn.BidRecord.OrderBy(p=>p.bid_id).ToList<BidRecord>().OrderBy(p => p.bid_id).Skip(skip).Take(take).ToList<BidRecord>();
上面就是分页带排序的方法。
说一下问什么这样做
dbconn 是Modle的对象
BidRecord 是一个实体
P=〉p.bid_id 是排序的条件
OrderBy 是排序(后面是条件)然后要查询所有的,在所有的数据中在查询你要分页的数据,skip是在分页在前有多少条数据,也就是在当前页数据之前的数据总和, (跳过序列中指定数量的元素,然后返回剩余的元素。)pageSize*(pageIndex-1),Take 是返回多少条数据,也就是pageSize!
2.关于Linq排序的问题:
linq中orderby 默认是升序(A-〉Z),可以添加 descending指定为降序(Z-〉A)
order by n descending
3.对出错信息:LINQ to Entities 不支持指定的类型成员“Date”。只支持初始值设定项、实体成员和实体导航属性。解决方案
DateTime date=DateTime.Parse(transDate); data = data.Where(p => EntityFunctions.DiffDays(p.TranDate,date)==0);
4.linq里不能有方法
5.datatable使用groupby进行分组统计 [2]
static void Main(string[] args) { DataTable dt = new DataTable(); dt.Columns.Add("A"); dt.Columns.Add("B"); dt.Columns.Add("C"); dt.Rows.Add("a1", "b1", "c1"); dt.Rows.Add("a1", "b2", "c2"); dt.Rows.Add("a2", "b3", "c3"); dt.Rows.Add("a3", "b4", "c4"); dt.Rows.Add("a1", "b5", "c5"); dt.Rows.Add("a2", "b6", "c6"); IEnumerable<IGrouping<string, DataRow>> result = dt.Rows.Cast<DataRow>().GroupBy<DataRow, string>(dr => dr["A"].ToString());//按A分组 foreach (IGrouping<string, DataRow> ig in result) { Console.WriteLine("当A="+ig.Key + ":"); Console.WriteLine("A".PadRight(10) + "B".PadRight(10) + "C".PadRight(10)); Console.WriteLine("=====".PadRight(10) + "=====".PadRight(10) + "=====".PadRight(10)); foreach (var dr in ig) Console.WriteLine(dr["A"].ToString().PadRight(10) + dr["B"].ToString().PadRight(10) + dr["C"].ToString().PadRight(10)); } Console.Read(); }