Что такое эквивалент VB.NET для этого кода на С#?

VB.NET эквивалентен этому С# -коду?

    ctx.Load(site,
                x => x.Lists.Where(l => l.Title != null));

Я пробовал

 ctx.Load(site, Function(x) x.Lists.Where(Function(l) l.Title IsNot Nothing))

но эти ошибки с "The expression (Convert(l.Title) != null) is not supported."

Мысли

Ответ 1

если Title string используется для использования IsNullOrEmpty();

или

Nullable (Of T).HasValue, если Title Nullable

или

Sub Main()

        Dim list As New List(Of A)

        Dim a1 As New A
        a1.Title = "sqws"
        Dim a2 As New A
        a2.Title = Nothing


        list.Add(a1)
        list.Add(a2)

        Dim q = From c In list Where c.Title IsNot Nothing

    End Sub



    Public Class A

        Dim t As String

        Public Property Title() As String
            Get
                Title = t
            End Get
            Set(ByVal value As String)
                t = value
            End Set
        End Property

    End Class

Ответ 2

Это может быть обман, но я использовал Reflector в прошлом, чтобы декомпилировать мой код на С#, а затем отобразить его как другие языки .NET, чтобы посмотреть, как они выглядят так, как я больше всего понимаю С#

Ответ 3

Вы пробовали функцию IsNothing?

ctx.Load(site, Function(x) x.Lists.Where(Function(l) Not IsNothing(l.Title)))

EDIT:

Теперь, когда вы указали, что Title является строкой, вы должны использовать функцию IsNullOrEmpty.

ctx.Load(site, Function(x) x.Lists.Where(Function(l) Not String.IsNullOrEmpty(l.Title)))

Ответ 4

Это действительно должно работать:

ctx.Load(site, Function(x) x.Lists.Where(Function(l) l.Title.IsNullOrEmpty = False))

Если это не так, дайте мне знать сообщение об ошибке.