2016-08-12 3 views
0

Ich fange gerade erst an, mir C# und ASP beizubringen - Ich entwickle gerade eine einfache WebApp bei der Arbeit, um eine Liste zu verwalten und sicherzustellen, dass die Einträge aktuell sind.Sortierung funktioniert nicht in Entity Framework

Ich habe den ersten Ansatz der Datenbank mit Entity Framework verwendet, um alles zu verknüpfen und seine Lade & Bearbeitung von Daten ohne ein Problem.

Ich habe versucht, Sortieren & Suche hinzuzufügen; was ich erfolgreich gemacht hatte, aber ich musste etwas von meiner Arbeit zurückverfolgen und jetzt funktioniert die Sortier-/Suchfunktionalität nicht. Ich denke, ich weiß, wo das Problem ist, aber keine Ahnung, wie zu beheben !!

Gestern verbrachte Stunden damit, es ohne Glück zu reparieren, also dachte ich würde mein Glück hier versuchen.

Models Dateistruktur: Modelle> 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

Controller

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()); 
    } 

Ich habe ein starkes Gefühl, dass das Problem mit diesem Bit ist: ist

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

Jede Hilfe sehr zu schätzen!

+0

off-topic, aber einen Blick auf [System.Linq.Dynamic] (https nehmen: // www.nuget.org/packages/System.Linq.Dynamic/) –

Antwort

1

Das ist ein dummer Fehler. Sie Rückkehr die ursprüngliche Datenbank Liste ohne Filterung oder Bestellung:

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

sollte sein:

return View(loggerz.ToList()); 
+0

Guter Ort. Der Code im OP macht zur Zeit die gesamte andere Logik überflüssig. Schöne und einfache Lösung :) –

+0

Eugh! Was für ein dummer Fehler in der Tat: | - Danke für das! :) Bin dankbar. –

Verwandte Themen