2015-05-26 3 views
0

У меня есть следующие действия в моем контроллере:заказ результатов в контроллере

public ActionResult Details(String id) 
{ 
    MyRecordContext rc = new MyRecordContext(); 
    List<MyRecord> rl = rc.MyRecords.Where(x => x.RecordID == id).ToList(); 

    return View(rl); 
} 

Как добавить заказа по статье на мой запрос к порядку записи на поле x.RecordName?

+0

Вы действительно должны «Положите свою логику db внутри действия на контроллер. – walther

+0

Вы имеете в виду предложение где? – ElenaDBA

+2

Собственно, оба. Они входят в DAL (уровень доступа к базе данных). Ваш контроллер не должен знать ничего о том, как получить данные или откуда они берутся, поэтому это нужно абстрагировать. Вся точка MVC должна иметь развязанную архитектуру. Контроллер существует для создания ответа, который будет отправлен клиенту, с учетом параметров, разбора запроса и возврата на основе этого (и, при необходимости, передачи модели/модели просмотра). – walther

ответ

4

Вы можете использовать метод расширения OrderBy, например.

public ActionResult Details(String id) 
{ 
    MyRecordContext rc = new MyRecordContext(); 
    List<MyRecord> rl = rc.MyRecords.Where(x => x.RecordID == id).OrderBy(x => x.RecordName).ToList(); 

    return View(rl); 
} 

Это будет заказать элементы по их RecordName в алфавитном порядке.

+0

Спасибо! Еще одна вещь - если я хочу заказать два поля (например, RecordName, а затем RecordTitle), как я могу это сделать? – ElenaDBA

+0

Посмотрите на команду 'ThenBy()' LINQ extension. –

0

Вы можете использовать OrderBy для например

public ActionResult Details(String id) 
{ 
MyRecordContext rc = new MyRecordContext(); 
List<MyRecord> rl = rc.MyRecords.Where(x => x.RecordID == id).OrderBy(x => x.RecordName).ToList(); 
return View(rl); 
} 
+0

Как правило, ответы гораздо полезнее, если они включают объяснение того, что должен делать код, и почему это решает проблему, не вводя других. (Это сообщение было помечено как минимум одним пользователем, предположительно потому, что они считали, что ответ без объяснений должен быть удален.) –

1

Если вы хотите сделать заказ на два поля, вы можете сделать это:

List<MyRecord> rl = rc.MyRecords.Where(x => x.RecordID == id) 
           .OrderBy(r=>r.RecordName) 
           .ThenBy(r=>r.RecordTitle) 
           .ToList(); 

ThenBy метод выполняет дополнительное упорядочение элементов в последовательности в порядке возрастания в соответствии с ключом. Если вы назовете OrderBy несколько раз, он будет эффективно переупорядочить последовательность полностью два раза