1

オブジェクトのリストがあり、それを検索してmyobject.articleIDが特定のarticleIDと一致するかどうかを確認したいと思います。.Find(Of T)を使用して収集したものから、これを実行するための最良の方法ですが、実装するのにいくつかの問題があります。これが私がこれまでに持っているいくつかのコードです:

<WebMethod()> _
Public Function SetTagOnFavorite(ByVal articleID As Integer, ByVal tagtext As String, ByVal mobileGUID As String) As AddTagResult
    Dim result As New AddTagResult
    Dim userID As Long = GetUserIDByMobileGUID(mobileGUID)


    If userID > 0 Then
        Dim pageNum As Integer = 1
        Dim pageLen As Integer = 500 'arbitrarily large number
        Dim savedArticleList As New List(Of SimpleArticle)
        savedArticleList = GetSavedArticles(mobileGUID, pageNum, pageLen)

        If savedArticleList.Find(Function( m As SimpleArticle) m.articleID = articleID)


            Dim lq As New lqDFDataContext
            Dim var = lq.web_AddTagToArticle(userID, articleID, tagtext).ToList()

            If var.Any() Then
                Dim vRes = var.First()
                result.articletagID = vRes.articletagID
                result.newarticletag = vRes.newarticletag
                result.newusertag = vRes.newusertag
                result.usertagID = vRes.usertagID
                result.resultinfo = "Success."

            End If
       End If  
    Else
        result.resultinfo = STR_NoUserIDMostLikelyTheSessionTimedOut
    End If
    Return result
End Function

私が得るエラーは、「SimpleArticle型の値をブール値に変換できない」です。

4

2 に答える 2

4

見つかったオブジェクトを返すためFind(Of、次の行を変更する必要があります。

If savedArticleList.Find(Function( m As SimpleArticle) m.articleID = articleID)

If savedArticleList.Find(Function( m As SimpleArticle) m.articleID = articleID) IsNot Nothing 

または、見つかったアイテムが必要な場合は、結果をFindローカル変数に格納します。

于 2012-08-01T15:47:09.403 に答える
3

@competent_techの回答をさらに最適化するには、次のようにします。

If savedArticleList.Any(Function(m) m.articleID = articleID))
于 2012-08-01T16:21:24.897 に答える