根据行中的结果对数据表中的组进行排序

时间:2013-11-27 07:11:44

标签: sql linq

我正在尝试对Datatables进行分组排序。截至目前,我的数据如下:

+-------+-----+--------+
| 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查询也没问题。

2 个答案:

答案 0 :(得分:0)

试试这个

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

答案 1 :(得分:0)

使用LINQ to DataSet(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();