DataTable (および DataView) の並べ替えのしくみのため、デリゲート アプローチを直接使用することはできません。1 つの回避策は、順序を表すデータ テーブルに列を追加し、目的の順序に基づいて (行ごとに) 値を設定することです。次に、この新しい列のビューに並べ替えを追加できます。例(簡潔にするために、LINQを使用してソートを行います):
var sorted = table.Rows.Cast<DataRow>().OrderBy(row => your code);
int sequence = 0;
foreach(var row in sorted)
{
row["sequence"] = sequence++;
}
(型指定されたデータセットがある場合、Cast ステップは必要ないと思います。または、型指定された DataRow サブクラスを使用します)
[2.0を含めるように編集]
2.0 (つまり、LINQ などを使用しない) では、 a を使用List<T>
して並べ替えを行うことができました。
List<DataRow> sorted = new List<DataRow>();
foreach(DataRow row in table.Rows)
{
sorted.Add(row);
}
sorted.Sort(delegate(DataRow x, DataRow y) { your code });
int sequence = 0;
foreach(DataRow row in sorted)
{
row["sequence"] = sequence++;
}
(ここでも、型指定されたデータセットを使用している場合は DataRow に置き換えてください)