无法在实体框架中进行排序

时间:2016-08-12 09:18:03

标签: c# entity-framework asp.net-mvc-4

我刚刚开始自学C#和ASP - 我正在开发一个简单的WebApp来维护一个列表并确保条目是最新的。

我已经将数据库第一种方法与实体框架一起使用,以便将它全部链接起来并将其加载和放置。编辑数据没有问题。

我试图添加排序和放大器搜索;我已成功完成但我不得不回溯我的一些工作,现在排序/搜索功能无效。我想我知道问题在哪里但不知道如何解决!

昨天花了几个小时试图修复它而没有运气,所以以为我会在这里试试运气。

模型文件结构: 模型> Loggers.edmx> Loggers.tt> Logger_Name.cs。

public partial class Logger_Name
{
    public int Serial { get; set; }
    public string Friendly_Name { get; set; }
    public string Site { get; set; }
    public string tSiteCode { get; set; }
    public string aSiteCode { get; set; }
}

picture of edmx diagram with names

控制器

public class LoggersController : Controller
    {
        private REDHHP_DEVEntities db = new REDHHP_DEVEntities();

    // GET: Loggers
    public ActionResult Index(string sortOrder, string searchString)
    {

        ViewBag.NameSortParm = sortOrder == "friendly_name_asc" ? "friendly_name_desc" : "friendly_name_asc";
        ViewBag.SiteSortParm = sortOrder == "site_asc" ? "site_desc" : "site_asc";
        ViewBag.CodeSortParm = sortOrder == "site_code_asc" ? "site_code_desc" : "site_code_asc";
        ViewBag.SerialSortParm = sortOrder == "serial_asc" ? "serial_desc" : "serial_asc";

        var loggerz = from s in db.Logger_Entity
                      select s;

        if (!String.IsNullOrEmpty(searchString))
        {
            loggerz = loggerz.Where(s => s.Friendly_Name.Contains(searchString)
                                   || s.Site.Contains(searchString)
                                   || s.tSiteCode.Contains(searchString));
        }

        switch (sortOrder)
        {
            case "site_desc":
                loggerz = loggerz.OrderByDescending(s => s.Site);
                break;
            case "friendly_name_desc":
                loggerz = loggerz.OrderByDescending(s => s.Friendly_Name);
                break;
            case "fite_code_desc":
                loggerz = loggerz.OrderByDescending(s => s.tSiteCode);
                break;
            case "site_asc":
                loggerz = loggerz.OrderBy(s => s.Site);
                break;
            case "friendly_name_asc":
                loggerz = loggerz.OrderBy(s => s.Friendly_Name);
                break;
            case "site_code_asc":
                loggerz = loggerz.OrderBy(s => s.tSiteCode);
                break;
            case "serial_desc":
                loggerz = loggerz.OrderByDescending(s => s.Serial);
                break;
            case "serial_asc":
                loggerz = loggerz.OrderBy(s => s.Serial);
                break;
            default:
                loggerz = loggerz.OrderBy(s => s.Site);
                break;
        }

        return View(db.Logger_Entity.ToList());
    }

我有一个强烈的预感,问题在于这一点:

var loggerz = from s in db.Logger_Entity
                      select s;

非常感谢任何帮助!

1 个答案:

答案 0 :(得分:1)

这是一个愚蠢的错误。您将返回原始数据库列表而不进行过滤或排序:

return View(db.Logger_Entity.ToList());

应该是:

return View(loggerz.ToList());