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