如何使用linq对数据表排序
我有一个如何使用linq对数据表排序,linq,c#-4.0,datatable,Linq,C# 4.0,Datatable,我有一个数据表,如下所示: |ItemName | ItemPro A HWH A BRB A EAH B HWH B BRB B EAH B HWH C BRB C EAH A HWH B BRB c EAH A H
数据表
,如下所示:
|ItemName | ItemPro
A HWH
A BRB
A EAH
B HWH
B BRB
B EAH
B HWH
C BRB
C EAH
A HWH
B BRB
c EAH
A HWH
B BRB
C EAH
A HWH
B BRB
B EAH
我想按ItemName
对上面的DataTable
进行分组,并对这些组进行排序
我怎样才能做到这一点
注意:排序后,我希望我的表如下所示
|ItemName | ItemPro
A HWH
A BRB
A EAH
B HWH
B BRB
B EAH
B HWH
C BRB
C EAH
A HWH
B BRB
c EAH
A HWH
B BRB
C EAH
A HWH
B BRB
B EAH
您不必按
ItemName
对值进行分组,而是可以对ItemName
应用排序,如:
var sortedQuery = dt.AsEnumerable()
.OrderBy(r=> r.Field<string>("ItemName"));
var sortedQuery = dt.AsEnumerable()
.OrderBy(r => r.Field<string>("ItemName"))
.ThenBy(r => r.Field<string>("ItemPro"));
如果希望生成新的数据表
,则:
DataTable sortedDt = dt.AsEnumerable()
.OrderBy(r => r.Field<string>("ItemName"))
.ThenBy(r => r.Field<string>("ItemPro"))
.CopyToDataTable();
DataTable sortedddt=dt.AsEnumerable()
.OrderBy(r=>r.Field(“ItemName”))
.ThenBy(r=>r.Field(“ItemPro”))
.CopyToDataTable();
var listOfStrings=新列表{
“橙色”,
“橙色”,
“橙色”,
“橙色”,
“芒果”,
“芒果”,
“芒果”,
“芒果”,
“芒果”,
“芒果”,
“苹果”,
“苹果”,
“苹果”
};
var groupedStrings=listOfStrings.GroupBy(i=>i)
.Select(i=>new{i.Key,Items=i.ToList()}).ToList();
var maxGroupSize=groupedStrings.OrderByDescending(i=>i.Items.Count).First()
.项目数;
var finalList=新列表();
对于(变量i=0;i
请查看我更新的问题并回复。谢谢你Advance@user3752669,您不需要分组依据,您可以对第二个字段使用OrderBy
和ThenBy
。您已经对数据表进行了排序,并且想要取消对其排序?woww,。那个鬼编辑只是使问题与以前完全相反。@Habib我认为这是错误的(否则就没有意义了)