using System; using System.Collections.Generic; using System.Data.Entity; using System.Data.Entity.Core.Common.CommandTrees; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Data.Entity.Migrations; using System.Linq.Expressions; using CK.SCP.Models; namespace CK.SCP.Controller { public static class EntitiesHelper { public static List GetModeList_genaral(Expression> select, Expression> where, Expression> order, out int count) where T : class { List list = null; count = 0; using (DbContext db = EntitiesFactory.CreateScpInstance()) { count = db.Set().Where(where).Count(); list = db.Set() .Where(where) .OrderBy(order) .Select(select).ToList(); } return list; } public static List GetPagedModelListAsc(Expression> select, Expression> where, Expression> order, int pageIndex, int pageSize, out int total) where T : class { List list = null; total = 0; using (DbContext db = EntitiesFactory.CreateScpInstance()) { total = db.Set().Where(where).Count(); list = db.Set() .Where(where) .OrderBy(order) .Select(select) .Skip((pageIndex - 1) * pageSize) .Take(pageSize).ToList(); } return list; } public static List GetPagedDataAsc(Expression> select, Expression> where, Expression> order, int pageIndex, int pageSize, out int total) where T : class { List list = null; total = 0; using (DbContext db = EntitiesFactory.CreateScpInstance()) { total = db.Set().Where(where.Compile()).AsQueryable().Count(); list = db.Set() .Where(where.Compile()).AsQueryable() .OrderBy(order) .Select(select) .Skip((pageIndex - 1) * pageSize) .Take(pageSize).ToList(); } return list; } //TODO 分页 原来 pageIndex-1 public static List GetPagedDataDesc(DbContext db, Expression> select, Expression> where, Expression> order, int pageIndex, int pageSize, out int total) where T : class { List list = null; total = 0; total = db.Set().Where(where).Count(); list = db.Set() .Where(where) .OrderByDescending(order) .Select(select) .Skip((pageIndex) * pageSize) .Take(pageSize).ToList(); return list; } public static List GetPagedList(DbContext db, Expression> order, int pageIndex, int pageSize, out int total) where T : class { List list = null; total = 0; total = db.Set().Count(); list = db.Set() .OrderByDescending(order) .Skip((pageIndex) * pageSize) .Take(pageSize).ToList(); return list; } } }