> 结果集?,c#,dictionary,json.net,ienumerable"/>

首页 > 解决方案 > 如何对 IEnumerable 上的一个或多个键进行排序> 结果集?

问题描述

我们有一个对 API 进行 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)
     {

     }
}

标签: c#dictionaryjson.netienumerable

解决方案


这段代码会起作用吗?

            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]);
                }
            }

推荐阅读