2015-10-15 3 views
0

здесь мой взгляд, где я пытаюсь разобратьсякак сделать столбцы сортируются с помощью LINQ

<tr> 
    <th> 
     @Html.ActionLink("WardName", "CompletedReq", new { strSortBy = "WardName" }) 

     @*@ @Html.DisplayNameFor(model => model.WARD_NAME)*@ 
    </th> 

    <th> 
     @Html.ActionLink("WardLocation", "CompletedReq", new { strSortBy = "WardLocation" }) 
     @*@ @Html.DisplayNameFor(model => model.WARD_LOCATION)*@ 
    </th> 
    <th> 
     @Html.ActionLink("ItemID", "CompletedReq", new { strSortBy = "ItemID" }) 
     @*@Html.DisplayNameFor(model => model.ITEM_ID)*@ 
    </th> 
    <th> 
     @Html.ActionLink("ItemType", "CompletedReq", new { strSortBy = "ItemType" }) 
     @*@Html.DisplayNameFor(model => model.ITEM_TYPE)*@ 
    </th> 
    <th> 
     @Html.ActionLink("ItemName", "CompletedReq", new { strSortBy = "ItemName" }) 
     @*@Html.DisplayNameFor(model => model.ITEM_NAME)*@ 

     </th> 
    </tr> 

я написал запрос с помощью LINQ, но я хочу сделать что-то вроде на OrderBy я сделать это успешные рамки объекта на одном столе, но не знаю, как я это сделать на этих таблицах на мой присоединяется

 var query = 
         from wr in db.Ward_Req 
         join w in db.Wards 
         on wr.WARD_ID equals w.WARD_ID 
         join rl in db.Req_Line 
         on wr.REQ_ID equals rl.REQ_ID 
         join m in db.Materials 
         on rl.ITEM_ID equals m.ITEM_ID 
         where wr.STATUS == "C" 
         orderby w.WARD_NAME descending 
         select new Reports 
         { 
          WARD_NAME = w.WARD_NAME, 
          WARD_LOCATION = w.WARD_LOCATION, 
          ITEM_ID = m.ITEM_ID, 
          ITEM_TYPE = m.ITEM_TYPE, 
          ITEM_NAME = m.ITEM_NAME 

         }; 
      return View(query.ToList()); 

так в моем порядке я хочу передать в strSortby в себя переключатель заявление, как я сделал на этой части, но я не могу делайте это правильно. Вот переключатель, который я написал на моем другом контроллере, который сделал сортировку успешно.

 public ActionResult Index(string strSortBy) 
    {    
     var staffs = db.Staffs.Include(s => s.Staff2); 
     switch (strSortBy) 
     { 
      case "fname": 
       staffs = staffs.OrderBy(s => s.FNAME); 
       break; 
      case "lname": 
       staffs = staffs.OrderBy(s => s.LNAME); 
       break; 
      case "phone": 
       staffs = staffs.OrderBy(s => s.TELEPHONE); 
       break; 
      case "gender": 
       staffs = staffs.OrderBy(s => s.GENDER); 
       break; 
      case "position": 
       staffs = staffs.OrderBy(s => s.POSITION); 
       break; 
      case "status": 
       staffs = staffs.OrderBy(s => s.STATUS); 
       break; 
      case "username": 
       staffs = staffs.OrderBy(s => s.USERNAME); 
       break; 
      default: 
       break; 
     } 
     return View(staffs.ToList()); 
    } 
+0

Это не должно быть ничем не отличается от того, что ваш делать в другой точки зрения , - 'switch (strSortBy) {case" WardLocation ": query = query.OrderBy (s => s.WARD_LOCATION); ломать; case "ItemID": query.OrderBy (s => s.ITEM_ID); break; etc} ' –

+0

я бы поставил это после моего запроса? –

+0

Я беру orderby в моем запросе linq? –

ответ

0

это код, который я сделал спасибо Стивен Муеке он отлично работает, я просто над думая, что вы высоко оценили хотя

  var query = 
         from wr in db.Ward_Req 
         join w in db.Wards 
         on wr.WARD_ID equals w.WARD_ID 
         join rl in db.Req_Line 
         on wr.REQ_ID equals rl.REQ_ID 
         join m in db.Materials 
         on rl.ITEM_ID equals m.ITEM_ID 
         where wr.STATUS == "C" 
         orderby w.WARD_NAME descending 
         select new Reports 
         { 
          WARD_NAME = w.WARD_NAME, 
          WARD_LOCATION = w.WARD_LOCATION, 
          ITEM_ID = m.ITEM_ID, 
          ITEM_TYPE = m.ITEM_TYPE, 
          ITEM_NAME = m.ITEM_NAME 

         }; 

      switch (strSortBy) 
      { 
       case "WardName": 
        query = query.OrderBy(s => s.WARD_NAME); 
        break; 
       case "WardLocation": 
        query = query.OrderBy(s => s.WARD_LOCATION); 
        break; 
       case "ItemID": 
        query = query.OrderBy(s => s.ITEM_ID); 
        break; 
       case "ItemType": 
        query = query.OrderBy(s => s.ITEM_TYPE); 
        break; 
       case "ItemName": 
        query = query.OrderBy(s => s.ITEM_NAME); 
        break; 
       default: 
        break; 
      } 
      return View(query.ToList()); 
Смежные вопросы