2

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

4

2 回答 2

1

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

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

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

在代码中,它在很大程度上取决于您将数据保存在哪里。数据集、数据表等

于 2012-06-11T12:52:40.840 回答
1

您可以将排序表中的行复制到Dicationary带有索引的 a 中。假设您的关键字段被命名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 的评论时,我认为值得一提的是,这是一种脱节的方法。任何适当的数据库软件也将为您执行此操作。

于 2012-06-11T12:53:21.623 回答