使用公共索引的所有关联值填充列表?

时间:2016-02-11 22:29:02

标签: vb.net datagridview tuples

我有一个List(Of Tuple(Of Object,Double),当我按任务运行购买零件的DataGridView时填充。每个任务由一个四位数字表示。大多数任务在DataGridView因为它们需要多个部分才能完成(但不是全部)。对于这个列表中的每个元组,Item1是任务编号,Item2是完成它所需的每个部分的成本之和。这是代码我现在正填充列表。

http://127.0.0.1:8888/api/contents

大约有70个任务。此方法仅使用39个项填充List。我知道代码是错误的,但我不能想到如何改进它或如何判断任务是否只有一个部分。

1 个答案:

答案 0 :(得分:1)

您应该只使用DataGridView或数据最初来自哪里,而不是重新读取DataSource中的数据。由于我们不知道那是什么,因此我会展示一些代码为DataGridView的代码。

正如您所说,任务由四位数字表示,我使用了Integer而不是Object来存储它。我还使用了Dictionary(Of Integer, String)来存储每项任务的总费用。这样可以轻松找到每项任务的当前总数。

Private purchasedSum As Dictionary(Of Integer, Double)

Private Sub populateDoubleList()
    purchasedSum = New Dictionary(Of Integer, Double)
    For i As Integer = 0 To DataGridView1.Rows.Count - 1
        Dim taskNum As Integer = CInt(DataGridView1.Item("TASK", i).Value)
        Dim cost As Double = CDbl(DataGridView1.Item("TOTALCOST", i - 1).Value)
        If purchasedSum.ContainsKey(taskNum) Then
            purchasedSum(taskNum) += cost
        Else
            purchasedSum.Add(taskNum, cost)
        End If
    Next
End Sub