2013-11-27 75 views
0

我正在尝试对数据表进行组排序。截至目前我有像数据:根据行中的结果对数据表中的组排序

 
+-------+-----+--------+ 
| rowno | mno | result | 
+-------+-----+--------+ 
|  1 | 80 |  20 | 
|  1 | 81 |  10 | 
|  1 | 82 |  30 | 
|  2 | 80 |  40 | 
|  2 | 81 |  50 | 
|  2 | 82 |  60 | 
|  3 | 80 |  70 | 
|  3 | 81 |  60 | 
|  3 | 82 |  50 | 
+-------+-----+--------+ 

按要求,我将选择特定MNO,可以说81,然后根据其结果为81,即10,50和60,我想按降序排列整个组。这意味着结果会是这样的:

 
+-------+-----+--------+ 
| rowno | mno | result | 
+-------+-----+--------+ 
|  3 | 80 |  70 | 
|  3 | 81 |  60 | 
|  3 | 82 |  50 | 
|  2 | 80 |  40 | 
|  2 | 81 |  50 | 
|  2 | 82 |  60 | 
|  1 | 80 |  20 | 
|  1 | 81 |  10 | 
|  1 | 82 |  30 | 
+-------+-----+--------+ 

我有整套的DataTable,并正在考虑将LINQ到解决这一之一。或者,如果可以建议SQL查询也可以。

+0

你能显示表的输入和输出格式结构体? – Mari

+0

我是新来的SO,所以我现在能够在表格结构中看到结果 – user2519001

回答

0

试试这个

SELECT rowno,mno,result from your_table 
    order by rowno desc 
+0

你错过了','在你的回答中 –

+0

分组被这个查询干扰了。此外,没有规定选择一个特定的mno价值,根据你需要做整个组排序 – user2519001

+0

感谢维杰..我刚刚编辑。你有没有试过这个 – Mari

0

使用LINQ到数据集(dt是你DataTable):

var sorted = dt.AsEnumerable() 
       .OrderByDescending(r => r.Field<int>("rowno")) 
       .CopyToDataTable(); 

没有LINQ:

var view = dt.DefaultView; 
view.Sort = "rowno DESC"; 
var sorted = view.ToTable(); 
+0

我只是不想按降序对整个数据表进行排序。我想要的是:对于特定的mno值,例如82,结果是20,15,30对应于rowno 1,2,3。然后在最后的结果中,rowno 2的结果应该先出现,然后用rowno 1出现,最后用rowno 3.我认为我现在更清楚了。整个团队将保持这样的状态,只是整个团队会改变他们的位置。 – user2519001

相关问题