我有 2 个数据表,其中我的数据(D1)具有唯一的数据 ID,而在另一个数据表(D2)中,我的数据表(D1)的所有记录的 ID 以特定的顺序排列。如何我可以根据 D2 中的 Id 顺序对我的数据表(D1)进行排序吗?我使用的是 c#asp.net
问问题
2002 次
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 回答