I have a Datatable contain n columns. I want to sort n columns in the datatable by LINQ but I don't know how to do that. I sorted successfully with 1 columns but I didn't with multi columns
Ex:
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
How to loop n columns to add in orderby operator.
My problem is user have a array contain name of columns to sort and I need loop a array to add columns name in operator orderby to sort multi column
PS: My English is not good. Sorry
Thanks Nguyen
To use the dictionary as order definition you can use the following:
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();
list.OrderBy(x => x.att1).ThenByDescending(x => x.att2);
Could be ThenByAscending
. Using a lambda in this situation would be cleaner to read as well.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With