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

本文关键字:数据表 排序 另一个 顺序 | 更新日期: 2023-09-27 18:36:51

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

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

您可以将排序表中的行复制到具有索引的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的评论时,我认为值得一提的是,这是一种脱节的方法。任何合适的数据库软件也会为您做到这一点。

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

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

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

在代码中,这在很大程度上取决于您保存数据的位置。数据集、数据表等