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

vb.net for each loop that compares a row to every other row

我正在尝试根据与其他行的比较来格式化一些 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))

希望有道理,非常感谢任何帮助。

如果您希望迭代每个项目(行)并将其自身与列表(网格)中的每个其他项目进行比较,则需要一个内部 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 语句,但这个想法应该可行。此外,您需要添加一个检查,以查看该行是否正在检查自身。