我有2个数据表,其中一个是我的数据(D1)和唯一的数据ID,另一个是数据表(D2)我有特定数据表(D1)的所有记录的ID如何根据D2中的ID顺序对数据表(D1)进行排序。我正在使用c#asp.net
答案 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的评论时,我认为值得一提的是这是断开连接的方法。任何适当的数据库软件也会为你做这件事。