2010-03-09 23 views
5

VB.NET equivalente a este código C#?¿Cuál es el equivalente de VB.NET a este código C#?

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

He intentado

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

pero esta errores con "The expression (Convert(l.Title) != null) is not supported."

Pensamientos

+0

es el Título ¿una cuerda? – garik

+0

El título es una propiedad que resulta ser un tipo de cadena – Bob

Respuesta

2

si el título es intentar utilizar cuerdas IsNullOrEmpty();

o

anulable (Of T) .HasValue si el título es anulable

o

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 
+0

He intentado esto y 1) el tipo no puede contener nulos es una cadena. 2) parece que no puede hacer comparaciones de cadenas en la declaración lambda ... – Bob

+0

ver mi muestra, por favor. Funciona – garik

0

¿Has probado la función IsNothing?

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

EDIT:

Ahora que ha especificado que el título es una cadena, se debe usar la función IsNullOrEmpty.

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

cuando pruebo esto en la expresión Lambda Recibo un error que indica que el miembro IsNnothing no se puede usar en la expresión ... – Bob

0

Esto realmente debería funcionar:

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

Si no es así, que me haga saber el mensaje de error.

2

Esto se puede hacer trampa, pero he utilizado reflector en el pasado para descompilar el código C# y luego mostrarlo como otros lenguajes .NET sólo para ver cómo se verían como soy mayor fluidez en C#

Cuestiones relacionadas