首页 > 解决方案 > 如果字符串包含字符串数组中的任何项,如何在 VB.NET 中使用 LINQ 返回 True

问题描述

我在堆栈溢出时找不到这个问题,但如果它在这里,请告诉我,我会把它记下来。

在 VB.NET 中使用 LINQ,如果字符串包含字符串数组中的一项,如何返回 True?

这是多行的代码。您如何在 VB.NET 中使用 LINQ 一行代码来做到这一点?

Sub Main

    Dim endPointTimeoutText As Array = {"endpoint timeout", "endpoint is not available"}

    Dim strResult As String = "endpoint is not available sample text."
    
    Dim booleanResult As Boolean = False

    For Each item As String In endPointTimeoutText

        If strResult.Contains(item) Then

            booleanResult = True
            Exit For

        End If

    Next
    
    Console.WriteLine(booleanResult) 'Only included this for the example
    
End Sub

预期结果将是“真”或“假”,具体取决于字符串 (strResult) 是否包含字符串数组 (endPointTimeoutText) 中的值之一

标签: arraysstringvb.netfunctionlinq

解决方案


你在心理上把它转过来——不要问“这个字符串 X,这个数组中的哪些东西在那个字符串中”,你问“这个字符串数组,它们中的哪些在这个字符串 X 中”:

Dim whichStringsArePresent = endPointTimeoutText.Where(Function(ett) strResult.Contains(ett))

Dim firstImeoutStringFound = endPointTimeoutText.FirstOrDefault(Function(ett) strResult.Contains(ett))

Dim wasATimeout = endPointTimeoutText.Any(Function(ett) strResult.Contains(ett))

ETC

顺便说一句,如果您使事物的集合具有复数名称,它将使您的代码阅读得更好。考虑更像这样的事情:

Dim wasATimeout = endPointTimeoutTexts.Any(Function(ett) strResult.Contains(ett))

它很微妙,但在可读性方面很重要


推荐阅读