簡體   English   中英

使用LINQ.Dynamic排序數據

[英]Sorting Data using LINQ.Dynamic

我想使用JSON數據填充表格。 這很完美。 但是,當我要查看數據時會出現問題。 我繼續遇到'UserModel'類型不存在屬性或字段'RegistrationIDasc'。 我的UserModel包含字符串RegistrationID。我不了解附加的“ asc”。 這是控制器

    public ActionResult LoadRolesData()
    {
        try
        {
            var draw = Request.Form.GetValues("draw").FirstOrDefault();
            var start = Request.Form.GetValues("start").FirstOrDefault();
            var length = Request.Form.GetValues("length").FirstOrDefault();
            var sortColumn = Request.Form.GetValues("columns[" + Request.Form.GetValues("order[0][column]").FirstOrDefault() + "][name]").FirstOrDefault();
            var sortColumnDir = Request.Form.GetValues("order[0][dir]").FirstOrDefault();
            var searchValue = Request.Form.GetValues("search[value]").FirstOrDefault();
            int pageSize = length != null ? Convert.ToInt32(length) : 0;
            int skip = start != null ? Convert.ToInt32(start) : 0;

            int recordsTotal = 0;

            var rolesData = _IAssignRoles.ShowallRoles(sortColumn, sortColumnDir, searchValue);
            recordsTotal = rolesData.Count();


            return Json(new { draw, recordsFiltered = recordsTotal, recordsTotal });
        }
        catch (Exception)
        {
            throw; //exception thrown here
        }
    }

下面是班級模型

            public IQueryable<UserModel> ShowallRoles(string sortColumn, string sortColumnDir, string Search)
    {
        var result = (from AssignedRoles in db.AssignedRoles
                         join registration in db.Registration on AssignedRoles.RegistrationID equals registration.RegistrationID
                         join AssignedRolesAdmin in db.Registration on AssignedRoles.AssignToAdmin equals AssignedRolesAdmin.RegistrationID
                         select new UserModel
                         {
                             Name = registration.Name,
                             AssignToAdmin = string.IsNullOrEmpty(AssignedRolesAdmin.Name) ? "*Not Assigned*" : AssignedRolesAdmin.Name.ToUpper(),
                             RegistrationID = registration.RegistrationID
                         });
        if (!(string.IsNullOrEmpty(sortColumn) && string.IsNullOrEmpty(sortColumnDir))) //first exception thrown
        {
            result = result.Where(sortColumn + "" + sortColumnDir);
        }
        if (!string.IsNullOrEmpty(Search))
        {
            result = result.Where(m => m.Name == Search);
        }
        return result;
    }

須藤代碼

public IQueryable<UserModel> ShowallRoles(string sortColumn, string sortColumnDir, string Search)
{
    var result = (from AssignedRoles in db.AssignedRoles
                 join registration in db.Registration on AssignedRoles.RegistrationID equals registration.RegistrationID
                 join AssignedRolesAdmin in db.Registration on AssignedRoles.AssignToAdmin equals AssignedRolesAdmin.RegistrationID
                 select new UserModel
                 {
                     Name = registration.Name,
                     AssignToAdmin = string.IsNullOrEmpty(AssignedRolesAdmin.Name) ? "*Not Assigned*" : AssignedRolesAdmin.Name.ToUpper(),
                     RegistrationID = registration.RegistrationID
                 });

    if (!string.IsNullOrEmpty(Search))
    {
        result = result.Where(m => m.Name == Search);
    }       

    if (!string.IsNullOrEmpty(sortColumn))
    {
        if (!string.IsNullOrEmpty(sortColumnDir))
        {
            if(sortColumnDir == "asc")
                result = result.OrderBy(sortColumn);
            else
                result = result.OrderByDescending(sortColumn);
        }
    }
    return result;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM