2

2 つのデータ テーブルがあります。1 つはデータ (D1) に一意のデータ ID を持ち、もう 1 つのデータ テーブル (D2) にはデータ テーブル (D1) のすべてのレコードの ID を特定の順序で持っています。 D2 の Id の順序に基づいてデータ テーブル (D1) を並べ替えることができますか?私は c# asp.net を使用しています

4

2 に答える 2

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 のコメントを読むと、これは切り離されたアプローチであることに言及する価値があると思います。適切なデータベース ソフトウェアも同様にこれを行います。

于 2012-06-11T12:53:21.623 に答える
1

これをコードで行うか、データベースで行うかによって異なります。

データベースでは、(MS-SQL/T-SQL) のように 2 つのテーブルを結合します。

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

コードでは、データを保持する場所に大きく依存します。DataSet、DataTable など。

于 2012-06-11T12:52:40.840 に答える