根据另一个数据表中的排序顺序对数据表进行排序

时间:2012-06-11 12:46:11

标签: c# asp.net

我有2个数据表,其中一个是我的数据(D1)和唯一的数据ID,另一个是数据表(D2)我有特定数据表(D1)的所有记录的ID如何根据D2中的ID顺序对数据表(D1)进行排序。我正在使用c#asp.net

2 个答案:

答案 0 :(得分:1)

这取决于您是否要在代码或数据库中执行此操作。

在数据库中,您将加入两个表,例如(MS-SQL / T-SQL):

SELECT D2.Sort, D1.* FROM D2 LEFT JOIN D1 ON D2.ID = D1.ID ORDER BY D2.Sort

在代码中,它很大程度上取决于您保存数据的位置。 DataSet,DataTables等。

答案 1 :(得分:1)

您可以将排序表中的行复制到带有索引的Dicationary中。假设您的关键字段名为Key,代码可能如下所示:

static void Main(string[] args)
{
    var dt = new DataTable("Data");
    var dtOrder = new DataTable("Order");

    // Insert some data here

    int i = 0;
    var orderDict = new Dictionary<object, int>();
    foreach(DataRow row in dtOrder.Rows)
    {
        orderDict.Add(row["Key"], ++i);
    }

    var ordered = dt.Rows.Cast<DataRow>().OrderBy(r => orderDict[r["Key"]]);
}

当我阅读Peaceman71的评论时,我认为值得一提的是这是断开连接的方法。任何适当的数据库软件也会为你做这件事。