行単位で操作することなく、C#でDataTableの値を見つける方法はありますか?DataTableで値を見つける
値は、データテーブルのセルを(カンマで区切られた[columnName] .valueの部分文字列)の一部にすることができ、その値はその行のいずれかの列に存在することがあります。
行単位で操作することなく、C#でDataTableの値を見つける方法はありますか?DataTableで値を見つける
値は、データテーブルのセルを(カンマで区切られた[columnName] .valueの部分文字列)の一部にすることができ、その値はその行のいずれかの列に存在することがあります。
DataTableまたはDataSetオブジェクトには、パラメータとして渡されたクエリに基づいて結果のDataRow配列を返すSelectメソッドがあります。
あなたの要件を見ると、あなたのfilterexpressressionはこの作業を行うためにいくらか一般的でなければなりません。
myDataTable.Select("columnName1 like '%" + value + "%'");
たぶん、あなたはこのような可能列で行をフィルタすることができます
DataRow[] filteredRows =
datatable.Select(string.Format("{0} LIKE '%{1}%'", columnName, value));
です。DataRow [] filteredRow = datatable.Select( "ColumnName = 'value'"); – Nicola
私の知る限り、すべての列を検索するために組み込まれては何もありません。プライマリキーに対してのみFind
を使用できます。 Select
には指定された列が必要です。あなたはおそらくLINQを使うことができますが、最終的には同じループをします。おそらくあなた自身でそれを展開するのでしょうか?それは少なくとも読むことができるでしょう。
この質問は2009年に尋ねたが、私は私のコードを共有したい:
Public Function RowSearch(ByVal dttable As DataTable, ByVal searchcolumns As String()) As DataTable
Dim x As Integer
Dim y As Integer
Dim bln As Boolean
Dim dttable2 As New DataTable
For x = 0 To dttable.Columns.Count - 1
dttable2.Columns.Add(dttable.Columns(x).ColumnName)
Next
For x = 0 To dttable.Rows.Count - 1
For y = 0 To searchcolumns.Length - 1
If String.IsNullOrEmpty(searchcolumns(y)) = False Then
If searchcolumns(y) = CStr(dttable.Rows(x)(y + 1) & "") & "" Then
bln = True
Else
bln = False
Exit For
End If
End If
Next
If bln = True Then
dttable2.Rows.Add(dttable.Rows(x).ItemArray)
End If
Next
Return dttable2
End Function
我々はLINQと上記の構文をどのように行うことができます。正確な値が必要な場合は – Karan