1

这就是我检查我的字典是否occurences 已经包含一个键和一个值并为其分配键和值的方式......但我需要另一个值,那么我如何在这里使用该对象?

Occurences.Add(xRows.Cells(4).Value.ToString(), Object)

不知何故像这样:

occurences(xRows.Cells(4).Value.ToString()) = Double.Parse(occurences(xRows.Cells(4).Value.ToString()).ToString()) + <"1st object value here">)

但这就是我目前的做法,它只有一个键和一个值,但我需要类似键、具有(值、值)的对象之类的东西:

实际代码:

If (occurences.ContainsKey(xRows.Cells(4).Value.ToString())) Then
    occurences(xRows.Cells(4).Value.ToString()) = Double.Parse(occurences(xRows.Cells(4).Value.ToString()).ToString()) + Double.Parse(xRows.Cells(7).Value.ToString())
Else
    occurences.Add(xRows.Cells(4).Value.ToString(), Double.Parse(xRows.Cells(7).Value.ToString()))
End If

Next

然后我有另一个插入代码,我需要使用对象的第二个值。

Using commm As New MySqlCommand()
    With commm
         .Parameters.Clear()
         .Parameters.AddWithValue("@iBrnchCde", cmbBrnchCode.Text)
         .Parameters.AddWithValue("@iFCode", pair.Key)
         .Parameters.AddWithValue("@iDesc", <"2nd OBJECT VALUE HERE"> )
         .Parameters.AddWithValue("@iQty", pair.Value)
         .CommandText = oInsertString
         .Connection = _conn
         .CommandType = CommandType.Text
     End With
     commm.ExecuteNonQuery()
End Using
4

2 回答 2

2

请执行下列操作:

Class CustomRowObject
    Public Property Name() As String
    Public Property Quantity() As Double
    Public Property Description() As String
End Class


If (occurences.ContainsKey(xRows.Cells(4).Value.ToString())) Then
    occurences(xRows.Cells(4).Value.ToString()).Quantity = Double.Parse(occurences(xRows.Cells(4).Value.ToString()).ToString()) + Double.Parse(xRows.Cells(7).Value.ToString())
Else
    occurences.Add(xRows.Cells(4).Value.ToString(),New CustomRowObject With { .Name = a.Cells("ProductName").Value.ToString(),.Description = .Cells("ProductDesc").Value.ToString(), .Quantity = a.Cells("Quantity").Value.ToString()})
End If

Next

然后通过引用它occurences("keynamegoeshere").Quantity以在您的 SQL 中使用。

于 2012-12-03T06:32:35.817 回答
1

我不确定我是否完全理解你的问题,但如果我这样做了,我会建议一种不同的方法:

为什么不创建一个包含您的值的类,然后将您的类添加到字典中 - 或者 - 创建一个类类型的字典:

Public myClass
    Public Code As String
    Public Desc as String
    ....
End Class

Dim myClassInstance as New myClass
'initialize fields
occurences.Add(key, myClassInstance)

检索获取值作为对象并使用if typeof value is myclass then- 如果您选择对象作为字典的类型。

如果您选择对象,您当然可以存储不同的类和类型,但成本是铸造。如果可能的话,制作一个您将用来避免强制转换的类型的字典。

Private myDictionary as New Dictionary(Of String, myClass)
于 2012-12-03T06:08:22.370 回答