Поэтому я использую Datatable.net, контроллер Asp.net MVC, обслуживающий данные Json.
Я пытаюсь сделать что-то похожее на эти сообщения:
У меня есть следующие параметры из вызова Javascript Ajax на сервер:
> int iSortingCols Number of columns to sort on > int iSortCol_(int) Column being sorted on > (you will need to decode this number for your database) > string sSortDir_(int) Direction to be sorted - "desc" or "asc".
Вот мой набор данных:
var db = new GER_MAPV_Context();
var allTags = db.TrimTables;
filteredTags = db.TrimTables.AsEnumerable();
IEnumerable<TrimTable> filteredTags;
//Зависимая функция для сортировки
Func<TrimTable, string> getColumnName = (
c => getCurrentSortColumn(1) == 1 ? c.TAG :
sortColumnIndex == 2 ? c.DESCRIPTION :
sortColumnIndex == 3 ? c.SET_POINT :
sortColumnIndex == 4 ? c.PRIORITY :
sortColumnIndex == 5 ? c.LIMIT_TYPE :
sortColumnIndex == 6 ? c.ALARM_TYPE :
sortColumnIndex == 7 ? c.AUTOMATED_SYSTEM :
sortColumnIndex == 8 ? c.COL_POL :
sortColumnIndex == 9 ? c.PROPERTY :
sortColumnIndex == 10 ? c.EQUIP_TYPE:
sortColumnIndex == 11 ? c.P_ID :
sortColumnIndex == 12 ? c.AREA :
sortColumnIndex == 13 ? c.COMPLEX :
sortColumnIndex == 14 ? c.UNIT : //PI Unit Format Long-text
sortColumnIndex == 15 ? c.UNIT_ : //Loop Number Format
sortColumnIndex == 16 ? c.LOOP_TYPE : //Loop Type i.e. PI, FIT, PSV
sortColumnIndex == 17 ? c.LOOP_ : //Loop Number
sortColumnIndex == 18 ? c.LOOP_EXT :
c.UNIT
);
Затем мне нужно отсортировать каждый из этих столбцов соответственно до 4 видов.
filteredTags.OrderBy(getColumnName).ThenByDescending(getColumnName);
//could have 1 - 4 orderby.thenby arrangements
хитрость в том, что мне нужно ввести "sortColumnIndex"
(это число и параметр JSON для iSortCol_1 или iSortCol_2 соответственно)
в функцию getColumnName, чтобы она вернула правильное имя столбца.
Я ломаю голову здесь.
В: Каковы основные шаги для этого?
И каков основной смысл выражения LINQ, которое я пытаюсь построить здесь?