用户在数字列表中分配非重复值

时间:2016-06-09 13:56:00

标签: sql vb.net

我正在创建输出排序功能。用户需要能够即时更改订单(它用于订购我们的订单拣货员的拣配清单)。我已经创建了一个Windows窗体,但我需要对它进行一些验证。验证本身很简单......数字必须按顺序排列,不能重复。如果他们重复,那么SQL报告就会爆炸......我也想验证不跳过任何值,但这并不是必需的。

有更好的方法:

if NumericUpDown1.value = NumericUpDown2.value then
    error goes here
end if 
if NumericUpDown1.value = NumericUpDown3.value then
    error goes here
end if 
if NumericUpDown1.value = NumericUpDown4.value then
    error goes here
end if ...

有一个很大的列表,这将是数千行代码。我知道必须有一个简单的解决方案。它没有来找我,而且我被困在它上面几天了。 (是的,我知道我可能已经完成了它)

1 个答案:

答案 0 :(得分:1)

就像Serg所说的那样,将值放入数组并使用Linq按值进行分组。然后找到任何重复。

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click

    Dim numericList = New Decimal() {
            NumericUpDown1.Value,
            NumericUpDown2.Value,
            NumericUpDown3.Value,
            NumericUpDown4.Value,
            NumericUpDown5.Value
        }

    Dim duplicatesExist = numericList _
        .GroupBy(Function(n) n) _
        .Any(Function(g) g.Count() > 1)

    If duplicatesExist Then
        MessageBox.Show("Duplicates exist")
    Else
        MessageBox.Show("No Duplicates")
    End If

End Sub