DataTable: Comment obtenir la valeur de l'article avec le nom de la ligne et le nom de la colonne? (VB)
j'ai un simple DataTable
où l'une des colonnes contient des valeurs uniques. Par exemple:
ColumnName1 ColumnName2
value1 35
value2 44
value3 10
parce que je sais que les valeurs 1, 2 et 3 seront toujours différentes les unes des autres, je voudrais obtenir une valeur de ce tableau en utilisant seulement Columname2 et une des valeurs de la colonne 1 . Ce serait par exemple:
searchedValue = DataTable.Rows("value3").Item("ColumnName2)
'result would be 10
j'ai essayé les exemples suivants sans succès:
-
avec le datable.Sélectionner la méthode : renvoie un tableau de lignes, mais je n'ai besoin que d'un
-
avec le DataTable.Rangée.Indexde la méthode : si j'ai bien compris, je dois fournir le contenu de la ligne entière pour qu'il soit trouvé avec cette méthode.
3 réponses
Dim rows() AS DataRow = DataTable.Select("ColumnName1 = 'value3'")
If rows.Count > 0 Then
searchedValue = rows(0).Item("ColumnName2")
End If
avec FirstOrDefault
:
Dim row AS DataRow = DataTable.Select("ColumnName1 = 'value3'").FirstOrDefault()
If Not row Is Nothing Then
searchedValue = row.Item("ColumnName2")
End If
En 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
, Essayez:
DataTable.Rows[RowNo].ItemArray[columnIndex].ToString()
(c'est le code C#. Remplacer ce chiffre par l'équivalent VB)