Как сортировать по одному или нескольким ключам в IEnumerable> набор результатов? - PullRequest
0 голосов
/ 24 декабря 2018

У нас есть представление, которое выполняет ajax-вызов API, который возвращает набор результатов типа IEnumerable<Dictionary<string, object>> и связывает эти данные с jQuery DataTable.Каждый Dictionary<string, object> по существу представляет DataRow.Как отсортировать эту коллекцию IEnumerable<Dictionary<string, object>> по одному или нескольким ключам в порядке, указанном на стороне сервера?

var sortOrderables = (JArray)_dtRequest["order"];
for (int i = 0; i < sortOrderables.Count; i++)
{
     var columnIdx = (int)sortOrderables[i]["column"];                
     var columnDir = (string)sortOrderables[i]["dir"];
     var column = (string)_dtRequest.SelectToken(string.Format("columns[{0}].data", columnIdx));    

     foreach(Dictionary<string, object> dataRow in _dataSet)
     {

     }
}

1 Ответ

0 голосов
/ 24 декабря 2018

Будет ли этот код работать?

            DataTable dt = new DataTable();

            Dictionary<string, DataTable> dict = dt.AsEnumerable()
                .GroupBy(x => x.Field<string>("Col A"), y => y)
                .ToDictionary(x => x.Key, y => y.CopyToDataTable());

            foreach (KeyValuePair<string, DataTable> key in dict.AsEnumerable())
            {
                int numberColumns = key.Value.Columns.Count;
                for (int i = numberColumns - 1; i >= 0; i--)
                {
                    key.Value.AsEnumerable().OrderBy(x => x[i]);
                }
            }
...