我有一个数据表包含n列。我想通过LINQ对数据表中的n列进行排序,但我不知道该怎么做。我用1列成功排序,但我没有多列
例如:
Dictionary<string, string> dict = Dictionary<string, string>
dict.Add("column_1", "asc");
dict.Add("column_2", "asc");
dict.Add("column_3", "asc");
...
dict.Add("column_n", "asc");
var Rows = from row in datatable.AsEnumerable()
orderby n1 acsending (I need loop to add all columns in Dictionary here to sort multi columns)
select row
如何循环n列以在orderby运算符中添加。
我的问题是用户有一个数组包含要排序的列的名称,我需要循环数组以在运算符orderby中添加列名称以排序多列
PS:我的英语不好。遗憾由于 阮
答案 0 :(得分:2)
list.OrderBy(x => x.att1).ThenByDescending(x => x.att2);
可以是ThenByAscending
。在这种情况下使用lambda也会更清晰。
答案 1 :(得分:1)
要将字典用作订单定义,您可以使用以下内容:
Dictionary<string, string> dict = new Dictionary<string, string>();
dict.Add("col1", "asc");
dict.Add("col2", "desc");
DataTable datatable = new DataTable();
datatable.Columns.Add("col1");
datatable.Columns.Add("col2");
datatable.Rows.Add(new[] {"a", "1"});
datatable.Rows.Add(new[] {"b", "2"});
datatable.Rows.Add(new[] {"a", "5"});
datatable.DefaultView.Sort =
String.Join(",", dict.Select(x => x.Key + " " + x.Value).ToArray());
datatable = datatable.DefaultView.ToTable();
答案 2 :(得分:0)
datatable.AsEnumerable().OrderBy(c => c[0]).ThenBy(c => c[1]);
这将按第一列和第二列排序行
答案 3 :(得分:0)
尝试按列分隔顺序的逗号
tx1