【解決方法】C# DataTable を検索する方法


id と date の 2 つの列を持つ DataTable があります (DateTime 形式 -> yyyy-dd-MMThh:mm:ss)。
今月に対応するデータを表示する必要があります。 どのように可能ですか?

解決策 1

通常、私は DataTable を検索しません。代わりに DataView をフィルター処理する傾向があります。
DataGridView を使用していると仮定すると、DataTable をソースとして使用してクラス レベルの DataView を作成し、DataView を DGV の DataSource として使用します。

C#
        private DataView dvBooks = new DataView();
...
            DataTable dt = myList.ToDataTable();
            dvBooks = new DataView(dt);
            dgvBooks.DataSource = dvBooks;

次に、RowFilter プロパティを使用して、表示された行をフィルター処理します。

C#
dgvBooks.RowFilter = "2024/06/30 LIKE '%-" + monthNumber.ToString("D2") + "T%'";

システムは一致するレコードのみを表示します。

解決策 3

ADO.NET(DataTable.Select):

DataRow[] filteredRows = tb.Select("CREATOR LIKE '%" + searchstring + "%'");
ADO.NET(DataView.RowFilter):

 tb.DefaultView.RowFilter = "CREATOR LIKE '%" + searchstring + "%'";

解決策 4

LINQ-To-DataSet (which i prefer):

var filtered = tb.AsEnumerable()
    .Where(r => r.Field<String>("CREATOR").Contains(searchstring));
ADO.NET(DataTable.Select):

DataRow[] filteredRows = tb.Select("CREATOR LIKE '%" + searchstring + "%'");
ADO.NET(DataView.RowFilter):

 tb.DefaultView.RowFilter = "CREATOR LIKE '%" + searchstring + "%'";

解決策 2

使用 選択する レコードをフィルタリングする Datatable のメソッド。 これにより、DataRow の配列が返されます。

コメント

タイトルとURLをコピーしました