每个循环的vb.net,用于将行与每个其他行进行比较

时间:2015-01-16 13:55:06

标签: vb.net datagridview

我正在尝试基于将它们与其他行进行比较来格式化一些datagridview行。

这是我到目前为止的代码。

    For Each row As DataGridViewRow In DaisyServicesForm.DataGridView1.Rows

        If row.Cells("UnitCost").Value = row.Cells("UnitCost").Value And (row.Cells("FromDate").Value <= row.Cells("ToDate").Value And row.Cells("ToDate").Value >= row.Cells("FromDate").Value) Then
            row.DefaultCellStyle.ForeColor = Color.Blue
        End If
    Next

但我不希望VB将行与自己进行比较,我希望它采取第一行,然后将其与其他所有行进行比较......然后取第二行并将其与其他行进行比较。

如果它在SQL中,它看起来像:

i.unitcost = i2.unitcost
and ((i.FromDate <= i2.ToDate)  
and  (i.ToDate >= i2.FromDate))

希望有意义,任何帮助都非常感激。

1 个答案:

答案 0 :(得分:1)

如果你希望迭代每个项目(行)并将自己与列表中的所有其他项目(网格)进行比较,则需要内部For Loop

For Each rowOuter As DataGridViewRow In DaisyServicesForm.DataGridView1.Rows
    For Each rowInner As DataGridViewRow In DaisyServicesForm.DataGridView1.Rows
        If rowOuter.Cells("UnitCost").Value = rowInner.Cells("UnitCost").Value And 
            (rowOuter.Cells("FromDate").Value <= rowInner.Cells("ToDate").Value And rowOuter.Cells("ToDate").Value >= rowInner.Cells("FromDate").Value) Then
            rowOuter.DefaultCellStyle.ForeColor = Color.Blue
    End If
    Next
Next
  • 第一个外部行将自己与所有行进行比较。
  • 下一个外行将自己与所有行进行比较。
  • ...
  • 最后一行将自己与所有行进行比较。

您可能需要检查我在那里的if语句,但这个想法应该有效。此外,您需要添加一个检查,以查看该行是否正在检查自己。