0

現在、特定の列で並べ替えられたデータテーブルがあり、並べ替えが完了したら、一番下にある不要なデータ行を削除したいと思います。

たとえば、14 行あり、上位 10 行のみが必要な場合、下位 4 行を削除するにはどうすればよいでしょうか?

データテーブルは、データテーブルに保存されている falt ファイルスプレッドシートファイルからクエリされ、データを並べ替えて、上位 10 行のみを取得したい

4

2 に答える 2

1

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番目のアプローチでは、不要な行を削除してデータテーブルを更新します(もちろんメモリ内のみ)

于 2012-12-10T11:00:38.010 に答える
0

データベースが SQL Server の場合:

Delete From VictimTable
       Where ID Not In(
       Select Top 10 ID From VictimTable Order By SomeColumn)
于 2012-12-10T10:46:50.453 に答える