【问题标题】:I would like to loop through an array looking for the first value that does not match 2345 string我想遍历一个数组以查找与 2345 字符串不匹配的第一个值
【发布时间】:2016-02-01 14:53:14
【问题描述】:

我将重新表述我的问题,以便人们了解我正在努力实现的目标,从而更容易帮助我。 我有几个对象objInputMessage 可以在objInputMessages 中找到。

第一个之后的对象也是我正在考虑的第一个strMessageCaseNumber

原因是第一个对象中的strMessageCaseNumber 恰好是最新的,我想找到更改之前的旧strMessageCaseNumber(新)。

在我的情况下,更改后的 strMessageCaseNumber 是 2345,所以我想在更改之前获得前一个,即 2346 这些对象objInputMessage 每个都包含strMessageCaseNumber 变量。

例如对象objInputMessagestrMessageCaseNumber 的值为2345。这是我想与下一个对象的strMessageCaseNumber 比较的strMessageCaseNumber (2345)。

如果下一个(第一个)对象的 strMessageCaseNumber(在我的例子中是 2346)与 strMessageCaseNumber 2345 不匹配,那么我想将该值分配给我命名为 strPriorCaseNumber 的变量

所以最终结果将是strPriorCaseNumber' =strMessageCaseNumber`

而 `strPriorCaseNumber' 将包含 2346

我希望这会有所帮助。

【问题讨论】:

    标签: .net arrays vb.net loops foreach


    【解决方案1】:

    您可以使用 For Each,但使用 Linq 查询可能更容易:

    设置一些要使用的数据:

        Dim values As String() = {"2345", "2346", "236", "2347"}
    

    找到第一个不匹配的值:

        Dim foundValue = values.FirstOrDefault(Function(x) x <> "2345")
        If foundValue IsNot Nothing Then MessageBox.Show(foundValue)
    

    为了完整起见,等效的 For Each 看起来像这样:

        For Each value In values
            If value <> "2345" Then
                MessageBox.Show(value)
                Exit For
            End If
        Next
    

    【讨论】:

    • First 如果未找到“2345”将抛出异常。我想你的意思是FirstOrDefault
    • @Blackwood - 实际上,如果数组中的唯一元素是“2345”,则会引发异常,但是是的,您有一个有效点
    猜你喜欢
    • 2017-01-26
    • 2013-05-16
    • 1970-01-01
    • 1970-01-01
    • 2019-11-13
    • 1970-01-01
    • 2020-08-02
    • 2015-11-08
    • 2019-04-05
    相关资源
    最近更新 更多