Linq to Entities按父表值排序。 (MVC)

时间:2015-02-12 14:27:01

标签: c# mysql asp.net-mvc linq

我有一个成员表,其中有一个来自ASPNETUSERS表的外键。我的ASPNETUSERS表中包含First Name和Last Name的其他字段,我想将其用作我的Members Controller中的排序值。

 var members = from m in db.Members.Include(m => m.AspNetUser).Include(m => m.Location) select m;

这是我正在检索的初始查询,以便让我所有成员和搜索很容易,因为我可以使用以下语法。

 members = members.Where(m => m.AspNetUser.LastName.Contains(searchString)
 || m.AspNetUser.HomePhone.Contains(searchString)
 || m.AspNetUser.MobilePhone.Contains(searchString)
 || m.AspNetUser.FirstName.Contains(searchString)
 || m.IdentificationNumber.Contains(searchString));

然而,当我尝试进行排序时,例如

 members = members.OrderByDescending(m => m.AspNetUser.LastName);

它"工作"但它实际上并没有排序,而是相关表的姓氏。

有人可以告诉我我做错了什么。

谢谢。

更新:以下是完整的操作结果方法。

    public ActionResult Index(string sortOrder, string searchString, string Command)
    {
        //Redirect back to login page if not authenticated
        if (!HttpContext.User.Identity.IsAuthenticated)
        {
            return RedirectToAction("Login", "Account");
        }

        ViewBag.LastNameSortParm = String.IsNullOrEmpty(sortOrder) ? "lastname_desc" : "";
        ViewBag.FirstNameSortParm = sortOrder == "firstname" ? "firstname_desc" : "firstname";

        var members = from m in db.Members.Include(m => m.AspNetUser).Include(m => m.Location) select m;

        if (Command == "Search")
        {
            if (!String.IsNullOrEmpty(searchString))
            {
                members = members.Where(m => m.AspNetUser.LastName.Contains(searchString)
                                       || m.AspNetUser.HomePhone.Contains(searchString)
                                       || m.AspNetUser.MobilePhone.Contains(searchString)
                                       || m.AspNetUser.FirstName.Contains(searchString)
                                       || m.IdentificationNumber.Contains(searchString));
            }
        }
        else if (Command == "Reset")
        {

        }

        switch (sortOrder)
        {
            case "lastname_desc":
                members = members.OrderByDescending(m => m.AspNetUser.LastName);
                break;
            case "firstname":
                members = members.OrderBy(m => m.AspNetUser.FirstName);
                break;
            case "firstname_desc":
                members = members.OrderByDescending(m => m.AspNetUser.FirstName);
                break;
            default:
                members = members.OrderBy(m => m.AspNetUser.LastName);
                break;
        }

        return View(members.ToList());
    }

0 个答案:

没有答案