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.

24
demandé sur Community 2012-09-12 15:10:58

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"];
46
répondu Amiram Korach 2014-05-19 19:57:47
'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
1
répondu Stephen Craver 2016-03-08 10:14:25

, Essayez:

DataTable.Rows[RowNo].ItemArray[columnIndex].ToString()

(c'est le code C#. Remplacer ce chiffre par l'équivalent VB)

-3
répondu NetTechie 2012-09-12 11:22:44