C# 如何在linq中添加multi-let运算符和orderby

C# 如何在linq中添加multi-let运算符和orderby,c#,linq,C#,Linq,我在datatable中有更多的列(大约100列)。参见下面的示例: 第1列第2列第3列..第n列 1.尼克| 1 |美国|……|值1 2.大卫| 2 |莱斯顿| | | | | | 2 |莱斯顿| |……|价值2 3.结婚| 3 |西班牙|……|价值3 4.加入| 4 |意大利3 |。。。。。价值4 Dictionary dict=new Dictionary(); 添加(“第1列”、“asc”); 添加(“第2列”、“asc”); 添加(“第1列”、“说明”); ............

我在datatable中有更多的列(大约100列)。参见下面的示例:

第1列第2列第3列..第n列 1.尼克| 1 |美国|……|值1 2.大卫| 2 |莱斯顿| | | | | | 2 |莱斯顿| |……|价值2 3.结婚| 3 |西班牙|……|价值3 4.加入| 4 |意大利3 |。。。。。价值4

Dictionary dict=new Dictionary();
添加(“第1列”、“asc”);
添加(“第2列”、“asc”);
添加(“第1列”、“说明”);
...................
添加(“列”、“asc”);
var myRows=来自datatable.AsEnumerable()中的行
让myID=int.Parse(row.Field(“Column 2”))
让name=row.Field(“第1列”).Split(“;”)[1]
....
orderby myID升序,名称降序,…,n列asc
选择行;
我的问题是如何循环字典中的所有项以添加更多的let语句和orderby字典中的所有列

请帮我修一下。我的英语不好,对不起

字典dict=newdictionary();
Dictionary<string, string > dict = new Dictionary<string, string>();
dict.Add("col1", "ASC");
dict.Add("col2", "ASC");
dict.Add("col3", "DESC");
DataTable dt = new DataTable();
dt.Columns.Add("col1");
dt.Columns.Add("col2");
dt.Columns.Add("col3");
Random r = new Random();
for (int i = 0; i < 20; i++)
    dt.Rows.Add(r.Next(10), r.Next(4), r.Next(2));
string sort = "";
foreach (KeyValuePair<string, string> entry in dict)
    sort = sort + " " + entry.Key + " " + entry.Value + ",";
sort = sort.Substring(0, sort.Length - 1).Trim();
dt.DefaultView.Sort = sort;
dt = dt.DefaultView.ToTable();
添加(“col1”、“ASC”); 添加(“col2”、“ASC”); 添加(“col3”、“DESC”); DataTable dt=新的DataTable(); dt.列添加(“第1列”); dt.列添加(“col2”); dt.列添加(“col3”); 随机r=新随机(); 对于(int i=0;i<20;i++) 添加(r.Next(10)、r.Next(4)、r.Next(2)); 字符串排序=”; foreach(dict中的KeyValuePair条目) 排序=排序+“”+entry.Key+“”+entry.Value+“,”; sort=sort.Substring(0,sort.Length-1.Trim(); dt.DefaultView.Sort=排序; dt=dt.DefaultView.ToTable();
可能类似于:?很好。我会使用字符串生成器,但除此之外,很好:)我可以使用linq来实现这一点。我不想使用dataview。因为我必须在排序之前自定义值。我需要拆分(“;”)值列1您需要的是。Ps:您也可以在将数据传递到datatable之前准备数据:)
Dictionary<string, string > dict = new Dictionary<string, string>();
dict.Add("Column_1", "asc");
dict.Add("Column_2", "asc");
dict.Add("Column_1", "desc");
...................
dict.Add("Column_n", "asc");

var myRows = from row in datatable.AsEnumerable()
             let myID = int.Parse(row.Field<string>("Column 2"))
             let name = row.Field<string>("Column 1").Split(';')[1]
             ....
             orderby myID ascending, name descending, ......, column n asc
             select row;
Dictionary<string, string > dict = new Dictionary<string, string>();
dict.Add("col1", "ASC");
dict.Add("col2", "ASC");
dict.Add("col3", "DESC");
DataTable dt = new DataTable();
dt.Columns.Add("col1");
dt.Columns.Add("col2");
dt.Columns.Add("col3");
Random r = new Random();
for (int i = 0; i < 20; i++)
    dt.Rows.Add(r.Next(10), r.Next(4), r.Next(2));
string sort = "";
foreach (KeyValuePair<string, string> entry in dict)
    sort = sort + " " + entry.Key + " " + entry.Value + ",";
sort = sort.Substring(0, sort.Length - 1).Trim();
dt.DefaultView.Sort = sort;
dt = dt.DefaultView.ToTable();