You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

115 lines
3.8 KiB

1 year ago
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<dynamic> GetModeList_genaral<T, TKey>(Expression<Func<T, dynamic>> select,
Expression<Func<T, bool>> where, Expression<Func<T, TKey>> order, out int count)
where T : class
{
List<dynamic> list = null;
count = 0;
using (DbContext db = EntitiesFactory.CreateScpInstance())
{
count = db.Set<T>().Where(where).Count();
list =
db.Set<T>()
.Where(where)
.OrderBy(order)
.Select(select).ToList();
}
return list;
}
public static List<dynamic> GetPagedModelListAsc<T, TKey>(Expression<Func<T, dynamic>> select,
Expression<Func<T, bool>> where, Expression<Func<T, TKey>> order, int pageIndex, int pageSize, out int total)
where T : class
{
List<dynamic> list = null;
total = 0;
using (DbContext db = EntitiesFactory.CreateScpInstance())
{
total = db.Set<T>().Where(where).Count();
list =
db.Set<T>()
.Where(where)
.OrderBy(order)
.Select(select)
.Skip((pageIndex - 1) * pageSize)
.Take(pageSize).ToList();
}
return list;
}
public static List<T> GetPagedDataAsc<T, TKey>(Expression<Func<T, T>> select,
Expression<Func<T, bool>> where, Expression<Func<T, TKey>> order, int pageIndex, int pageSize, out int total)
where T : class
{
List<T> list = null;
total = 0;
using (DbContext db = EntitiesFactory.CreateScpInstance())
{
total = db.Set<T>().Where(where.Compile()).AsQueryable().Count();
list =
db.Set<T>()
.Where(where.Compile()).AsQueryable()
.OrderBy(order)
.Select(select)
.Skip((pageIndex - 1) * pageSize)
.Take(pageSize).ToList();
}
return list;
}
//TODO 分页 原来 pageIndex-1
public static List<dynamic> GetPagedDataDesc<T, TKey>(DbContext db, Expression<Func<T, dynamic>> select,
Expression<Func<T, bool>> where, Expression<Func<T, TKey>> order, int pageIndex, int pageSize, out int total)
where T : class
{
List<dynamic> list = null;
total = 0;
total = db.Set<T>().Where(where).Count();
list =
db.Set<T>()
.Where(where)
.OrderByDescending(order)
.Select(select)
.Skip((pageIndex) * pageSize)
.Take(pageSize).ToList();
return list;
}
public static List<T> GetPagedList<T, TKey>(DbContext db, Expression<Func<T, TKey>> order, int pageIndex, int pageSize, out int total)
where T : class
{
List<T> list = null;
total = 0;
total = db.Set<T>().Count();
list =
db.Set<T>()
.OrderByDescending(order)
.Skip((pageIndex) * pageSize)
.Take(pageSize).ToList();
return list;
}
}
}