単純なDataTable
があり、列の1つに一意の値が含まれています。例えば:
ColumnName1 ColumnName2
value1 35
value2 44
value3 10
値1、2、および3は常に互いに異なることがわかっているため、ColumnName2のみを使用してこのテーブルの値を取得したいColumnName1の値の1つ。たとえば、次のようになります。
searchedValue = DataTable.Rows("value3").Item("ColumnName2)
'result would be 10
次の例を試してみましたが失敗しました:
DataTable.Selectメソッドを使用 :行の配列を返しますが、必要なのは1つだけです
DataTable.Rows.IndexOfメソッドを使用 :よく理解している場合は、このメソッドで検出されるように行の内容全体を提供する必要があります。
Dim rows() AS DataRow = DataTable.Select("ColumnName1 = 'value3'")
If rows.Count > 0 Then
searchedValue = rows(0).Item("ColumnName2")
End If
FirstOrDefault
の場合:
Dim row AS DataRow = DataTable.Select("ColumnName1 = 'value3'").FirstOrDefault()
If Not row Is Nothing Then
searchedValue = row.Item("ColumnName2")
End If
C#の場合:
var row = DataTable.Select("ColumnName1 = 'value3'").FirstOrDefault();
if (row != null)
searchedValue = row["ColumnName2"];
'Create a class to hold the pair...
Public Class ColumnValue
Public ColumnName As String
Public ColumnValue As New Object
End Class
'Build the pair...
For Each row In [YourDataTable].Rows
For Each item As DataColumn In row.Table.Columns
Dim rowValue As New ColumnValue
rowValue.ColumnName = item.Caption
rowValue.ColumnValue = row.item(item.Ordinal)
RowValues.Add(rowValue)
rowValue = Nothing
Next
' Now you can grab the value by the column name...
Dim results = (From p In RowValues Where p.ColumnName = "MyColumn" Select p.ColumnValue).FirstOrDefault
Next