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

C# 根据另一个数据表的排序顺序对数据表进行排序,c#,asp.net,C#,Asp.net,我有两个数据表,一个表中我的数据(D1)具有唯一的数据Id,另一个表(D2)中我的数据表(D1)的所有记录的Id具有特定顺序。我如何对数据表(D1)进行排序基于D2中ID的顺序。我使用的是c#asp.net这取决于您是想在代码中还是在数据库中执行此操作 在数据库中,您将连接两个表,例如(MS-SQL/T-SQL): 在代码中,这在很大程度上取决于数据保存的位置。数据集、数据表等。您可以将排序表中的行复制到带有索引的索引中。假设您的密钥字段名为key,代码可能如下所示: static void M

我有两个数据表,一个表中我的数据(D1)具有唯一的数据Id,另一个表(D2)中我的数据表(D1)的所有记录的Id具有特定顺序。我如何对数据表(D1)进行排序基于D2中ID的顺序。我使用的是c#asp.net

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

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


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

您可以将排序表中的行复制到带有索引的
索引中。假设您的密钥字段名为
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"]]);
}
static void Main(字符串[]args)
{
var dt=新数据表(“数据”);
var dtOrder=新数据表(“订单”);
//在这里插入一些数据
int i=0;
var ordedict=新字典();
foreach(dtOrder.Rows中的数据行)
{
ordedict.Add(行[“键],++i);
}
var ordered=dt.Rows.Cast().OrderBy(r=>orderDict[r[“Key”]]);
}

当我读到Peaceman71的评论时,我认为值得一提的是,这是一种不连贯的方法。任何合适的数据库软件都可以为您提供此功能。

我想用c代码实现此功能……我有两个数据表,谢谢您的澄清。然后你从Mudu那里得到了一个很好的答案。你也可以创建一个数据集,添加两个表和一个关系。但是,我认为这种方法更容易做到这一点。此外,您可以使用普通LINQ将两个数据表连接到对象,并按照第二个数据表的记录顺序对它们进行排序。与Peaceman71的SQL类似,只是在LINQ.ok中,此查询仅根据D2对数据表D1的一列进行排序,我想根据D2No中的Id对整个数据表D1进行排序,这不是完全正确的
ordered
是一个
IOrderedEnumerable
,包含
dt
/
D1
的整行。
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"]]);
}