Model view controller 对不在数据库MVC中的列进行排序

Model view controller 对不在数据库MVC中的列进行排序,model-view-controller,Model View Controller,我正在尝试对数据库中实际不存在的列进行升序/降序排序 型号: public int? Stewardship { get; set; } [Range(0, 50, ErrorMessage = "Enter number between 0 and 50")] public int? Culture { get; set; } [Range(0, 50, ErrorMessage = "Enter number between 0 and 50")] [D

我正在尝试对数据库中实际不存在的列进行升序/降序排序

型号:

   public int? Stewardship { get; set; }
    [Range(0, 50, ErrorMessage = "Enter number between 0 and 50")]
    public int? Culture { get; set; }
    [Range(0, 50, ErrorMessage = "Enter number between 0 and 50")]
    [Display(Name = "Delivery Excellence")]
    public int? Delivery_Excellence { get; set; }
    [Range(0, 50, ErrorMessage = "Enter number between 0 and 50")]
    public int? Innovation { get; set; }
    [Range(0, 50, ErrorMessage = "Enter number between 0 and 50")]
    [Display(Name = "Greater Good")]
    public int? Greater_Good { get; set; }
    [Range(0, 50, ErrorMessage = "Enter number between 0 and 50")]
    [Display(Name = "Integrity and Openness")]
    public int? Integrity_And_Openness { get; set; }
    [Range(0, 50, ErrorMessage = "Enter number between 0 and 50")]
    public int? Balance { get; set; }
    [Range(0, 50, ErrorMessage = "Enter number between 0 and 50")]
    [Display(Name = "Total Points")]
    public int? TotalPoints
    {
        get
        {
            return Stewardship + Culture + Delivery_Excellence + Innovation + Greater_Good + Integrity_And_Openness + Balance;
        }
    }
控制器:

    public ActionResult Index(string sortOrder)
    {

    //https://docs.microsoft.com/en-us/aspnet/mvc/overview/getting-started/getting-started-with-ef-using-mvc/sorting-filtering-and-paging-with-the-entity-framework-in-an-asp-net-mvc-application

        //ViewBag.TotalSortParm = String.IsNullOrEmpty(sortOrder) ? "total_desc" : "";
        ViewBag.NameSortParm = String.IsNullOrEmpty(sortOrder) ? "name_desc" : "";
        ViewBag.StewardshipSortParm = sortOrder == "Stewardship" ? "stewardship_desc" : "Stewardship";
        ViewBag.CultureSortParm = sortOrder == "Culture" ? "culture_desc" : "Culture";
        ViewBag.DeliverySortParm = sortOrder == "Delivery Excellence" ? "delivery_excellence_desc" : "Delivery Excellence";
        ViewBag.InnovationSortParm = sortOrder == "Innovation" ? "innovation_desc" : "Innovation";
        ViewBag.GreaterSortParm = sortOrder == "Greater Good" ? "greater_good_desc" : "Greater Good";
        ViewBag.IntegritySortParm = sortOrder == "Integrity And Openness" ? "integrity_desc" : "Integrity And Openness";
        ViewBag.BalanceSortParm = sortOrder == "Balance" ? "balance_desc" : "Balance";
        //ViewBag.NameSortParm = sortOrder == "Name" ? "name_desc" : "Name";
        var leaderboard = from s in db.Users
                       select s;
        switch (sortOrder)
        {
            //case "total_desc":
            //    leaderboard = leaderboard.OrderByDescending(s => s.TotalPoints);
            //    break;

            case "name_desc":
                leaderboard = leaderboard.OrderByDescending(s => s.UserDetails.firstName);
                break;

            case "Stewardship":
                leaderboard = leaderboard.OrderBy(s => s.Stewardship);
                break;
            case "stewardship_desc":
                leaderboard = leaderboard.OrderByDescending(s => s.Stewardship);
                break;

            case "Culture":
                leaderboard = leaderboard.OrderBy(s => s.Culture);
                break;
            case "culture_desc":
                leaderboard = leaderboard.OrderByDescending(s => s.Culture);
                break;

            case "Delivery Excellence":
                leaderboard = leaderboard.OrderBy(s => s.Delivery_Excellence);
                break;
            case "delivery_excellence_desc":
                leaderboard = leaderboard.OrderByDescending(s => s.Delivery_Excellence);
                break;

            case "Innovation":
                leaderboard = leaderboard.OrderBy(s => s.Innovation);
                break;
            case "innovation_desc":
                leaderboard = leaderboard.OrderByDescending(s => s.Innovation);
                break;

            case "Greater Good":
                leaderboard = leaderboard.OrderBy(s => s.Greater_Good);
                break;
            case "greater_good_desc":
                leaderboard = leaderboard.OrderByDescending(s => s.Greater_Good);
                break;

            case "Integrity And Openness":
                leaderboard = leaderboard.OrderBy(s => s.Integrity_And_Openness);
                break;
            case "integrity_desc":
                leaderboard = leaderboard.OrderByDescending(s => s.Integrity_And_Openness);
                break;

            case "Balance":
                leaderboard = leaderboard.OrderBy(s => s.Balance);
                break;
            case "balance_desc":
                leaderboard = leaderboard.OrderByDescending(s => s.Balance);
                break;

            case "Name":
                leaderboard = leaderboard.OrderBy(s => s.UserDetails.firstName);
                break;                

            default:
                leaderboard = leaderboard.OrderBy(s => s.UserDetails.firstName);
                break;
        }
        return View(leaderboard.ToList());
    }
索引:

<table class="table">
    <tr>
        <th>
            @Html.ActionLink("Name", "Index", new { sortOrder = ViewBag.NameSortParm })
        </th>
        <th>
            @Html.ActionLink("Stewardship", "Index", new { sortOrder = ViewBag.StewardshipSortParm })
        </th>
        <th>
            @Html.ActionLink("Culture", "Index", new { sortOrder = ViewBag.CultureSortParm })
        </th>
        <th>
            @Html.ActionLink("Delivery Excellence", "Index", new { sortOrder = ViewBag.DeliverySortParm })
        </th>
        <th>
            @Html.ActionLink("Innovation", "Index", new { sortOrder = ViewBag.InnovationSortParm })
        </th>
        <th>
            @Html.ActionLink("Greater Good", "Index", new { sortOrder = ViewBag.GreaterSortParm })
        </th>
        <th>
            @Html.ActionLink("Integrity And Openness", "Index", new { sortOrder = ViewBag.IntegritySortParm })
        </th>
        <th>
            @Html.ActionLink("Balance", "Index", new { sortOrder = ViewBag.BalanceSortParm })
        </th>
        <th> 
            @Html.DisplayNameFor(model => model.TotalPoints)
        </th>
    </tr>

@ActionLink(“Name”,“Index”,new{sortOrder=ViewBag.NameSortParm})
@ActionLink(“管理”、“索引”,新的{sortOrder=ViewBag.StewardshipSortParm})
@ActionLink(“文化”、“索引”,new{sortOrder=ViewBag.CultureSortParm})
@ActionLink(“卓越交付”,“索引”,新{sortOrder=ViewBag.DeliverySortParm})
@ActionLink(“创新”,“索引”,new{sortOrder=ViewBag.InnovationSortParm})
@ActionLink(“更好”、“索引”,新的{sortOrder=ViewBag.GreaterSortParm})
@ActionLink(“完整性和开放性”、“索引”,新的{sortOrder=ViewBag.IntegritySortParm})
@ActionLink(“Balance”,“Index”,new{sortOrder=ViewBag.BalanceSortParm})
@DisplayNameFor(model=>model.TotalPoints)
我基本上希望能够使用表头中的链接对每个字段进行排序,这可以很好地处理模型/数据库中的所有内容,但是我得到一个LINQ错误,因为TotalPoints列不在实际的SQL数据库中,它试图对控制器中的总点数进行排序的已注释部分是我遇到问题的地方