2016-08-12 7 views
0

をソート取得できません。私はただ自分自身にC#とASPを教えるために始めている - 私は現在、リストを維持し、エントリが最新であることを保証するために、職場での簡単なWebAppのを開発しています。Entity Frameworkの中で働いて

私はそれがすべて問題なく&編集データをリンクし、その荷重を取得するために、Entity Frameworkを使用してデータベースの最初のアプローチを使用していました。

私は&検索をソート追加しようとしています。私はうまくやっていましたが、仕事の一部を取り戻さなければなりませんでした。今ではソート/検索機能が動作していません。私はどこに問題があるかを知っていると思うが、解決する手がかりはない!!運でそれを修正しようと昨日の時間を費やし

ので、私はここに私の運を試してみようと思いました。

モデルファイルの構造: モデル> 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; 

は、すべてのヘルプは大歓迎です!

+0

が、[System.Linq.Dynamic](HTTPSを見てみましょう:// www.nuget.org/packages/System.Linq.Dynamic/) –

答えて

1

1つの愚かな間違いです。あなたはフィルタリングや発注せずに元のデータベースのリストを返します:

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

をする必要があります:オフトピック

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

良い点。 OPのコードは現在、他のすべてのロジックを冗長化しています。ニースと簡単に修正:) –

+0

Eugh!確かに愚かな間違い:| - 有難うございます! :) 感謝します。 –

関連する問題