Royi Namir
New member
לא הבנתי את הקשר של המשפט האחרון שלך
public JsonResult GetData(ParamsModel param)
{
//get filter expression from the user
var predicate = Expression(param);
//get full total count
int totalCount = GetRepositroy<SYS_TBL_People>().Table().Count();
//get filtered data
var Peoples = GetRepositroy<SYS_TBL_People>().Table().AsNoTracking()
.Include(s => s.SYS_TBL_VALS_PeopleStatus) ..... // more includes
.AsExpandable().Where(predicate.Compile());
//change the filterd data to model
var memberCol = Peoples.Select(i => new PeopleModel()
{
PeopleId = i.PeopleId,
FirstName = i.FirstName,
LastName = i.LastName,
Subject = i.SYS_TBL_VALS_PeopleSubject != null ? i.SYS_TBL_VALS_PeopleSubject.PeopleSubjectName : "",
..... // more fields
}).AsQueryable();
IEnumerable<PeopleModel> filteredMembers = memberCol;
//get the sort field from the user
int index = param.iSortCol_0;
Func<PeopleModel, string> orderingFunction = (m =>
index == 0
? m.PeopleId
:index == 1
? m.Id
...........);
//get sort type from the user (asc | desc)
filteredMembers = param.sSortDir_0 == "asc" ? filteredMembers.OrderBy(orderingFunction) : filteredMembers.OrderByDescending(orderingFunction);
//get pagination
var displayedMembers = filteredMembers
.Skip(param.iDisplayStart)
.Take(param.iDisplayLength);
//change results to array
var result = from a in displayedMembers
select new[]
{
a.PeopleId,
a.Id,
a.FirstName,
.................. // more fields
};
return Json(new
{
sEcho = param.sEcho,
iTotalRecords = totalCount,
iTotalDisplayRecords = filteredMembers.Count(),
aaData = result
},
JsonRequestBehavior.AllowGet);
}
private Expression<Func<SYS_TBL_People, bool>> Expression(PeoplesParamsModel param)
{
var predicate = PredicateBuilder.True<SYS_TBL_People>();
if (!string.IsNullOrEmpty(param.subjects))
{
var subjectsPredicate = PredicateBuilder.False<SYS_TBL_People>();
string[] subjects = param.subjects.Split(',');
foreach (string key in subjects)
{
subjectsPredicate = subjectsPredicate.Or(m => m.SubjectId == key);
}
 
public JsonResult GetData(ParamsModel param)
{
var peoples = GetRepositroy<SYS_TBL_People>()
.Table(); // Table must implement IQuerable<T>
//get full total count
int totalCount = peoples.Count();
var peoplesQuery = peoples
// we doesn't need any include, because we runs the query once
//.Include(s => s.SYS_TBL_VALS_PeopleStatus) // more includes
.AsNoTracking();
if (!string.IsNullOrEmpty(param.subjects))
{
string[] subjects = param.subjects.Split(',');
peoplesQuery = peoplesQuery.Where(x => subjects.Contains(x.Subject));
}
if (param.accepted > -1)
{
bool accepted = param.accepted == 0;
peoplesQuery = peoplesQuery.Where(x => (IfAccepted ?? false) == accepted);
}
// more filters here
//get the sort field from the user
//get sort type from the user (asc | desc)
int index = param.iSortCol_0;
bool orderAsc = param.sSortDir_0 == "asc";
if (index == 0)
{
if (orderAsc)
peoplesQuery = peoplesQuery.OrderBy(x => x.PeopleId);
else
peoplesQuery = peoplesQuery.OrderByDesc(x => x.PeopleId);
}
if (index == 1)
{
if (orderAsc)
peoplesQuery = peoplesQuery.OrderBy(x => x.Id);
else
peoplesQuery = peoplesQuery.OrderByDesc(x => x.Id);
}
// select the filterd data to model
var queryResult = peoplesQuery
.Skip(param.iDisplayStart)
.Take(param.iDisplayLength)
.Select(i => new PeopleModel()
{
PeopleId = i.PeopleId,
FirstName = i.FirstName,
LastName = i.LastName,
Subject = i.SYS_TBL_VALS_PeopleSubject?.PeopleSubjectName ?? ""
// more fields
}).ToArray();
var result = new
{
sEcho = param.sEcho,
iTotalRecords = totalCount,
iTotalDisplayRecords = queryResult.Count(),
aaData = queryResult
};
return Json(result, JsonRequestBehavior.AllowGet);
}
Copyright©1996-2021,Tapuz Media Ltd. Forum software by XenForo® © 2010-2020 XenForo Ltd.