現在、特定の列で並べ替えられたデータテーブルがあり、並べ替えが完了したら、一番下にある不要なデータ行を削除したいと思います。
たとえば、14 行あり、上位 10 行のみが必要な場合、下位 4 行を削除するにはどうすればよいでしょうか?
データテーブルは、データテーブルに保存されている falt ファイルスプレッドシートファイルからクエリされ、データを並べ替えて、上位 10 行のみを取得したい
Linq を使用して、Take(10) を使用して上位 10 レコードを抽出できますが、データテーブルを並べ替えた後
var records = datatable.AsEnumerable().OrderBy(v => v["FieldToUseAsSortOrder"]).Take(10);
foreach(DataRow r in records)
{
// process your records in order
}
もちろん、これはテーブルに対して並べ替えをやり直すので、上記の LinQ 式を並べ替えるか、DefaultView 行をループして不要なものを削除するかを選択するのはあなた次第です
for(int x = 10; x < datatable.DefaultView.Count; x++)
{
datatable.DefaultView[x].Row.Delete();
}
datatable.AcceptChanges();
最初のアプローチでは、必要な行のみを抽出して元のすべての行をデータテーブルに残します。2番目のアプローチでは、不要な行を削除してデータテーブルを更新します(もちろんメモリ内のみ)
データベースが SQL Server の場合:
Delete From VictimTable
Where ID Not In(
Select Top 10 ID From VictimTable Order By SomeColumn)