none
ElementAt() RRS feed

  • Pregunta

  • Buenas xicos, 

    Haciendo un LINQ consigo sacar una serie de elementos. 

    nInmueblesUN = New CLI_UN(dat.fotografias.ElementAt(0).docWeb.ToString,dat.fotografias.ElementAt(1).docWeb.ToString)
    

    Mi pregunta es... como determino yo si existe este ElementAt? En el ejemplo imaginaros que 0 existe, pero el 1 no.

    Gracias

    Edito: intento solucionarlo así pero no me gusta: foto1 = IIf(dat.fotografias.Count() >= 1, dat.fotografias.ElementAt(0).docWeb.ToString, Nothing)

    foto2 = IIf(dat.fotografias.Count() >= 2, dat.fotografias.ElementAt(1).docWeb.ToString, Nothing)

    • Editado arseneonly miércoles, 5 de octubre de 2011 9:24
    • Cambiado Enrique M. Montejo miércoles, 5 de octubre de 2011 18:55 (De:Lenguaje VB.NET)
    miércoles, 5 de octubre de 2011 9:18

Respuestas

Todas las respuestas

  • pero eso que muestras alli no es un linq, es solo una instancia de un objeto en dodne pasa info al constructor

    podrias hacer

    si usas linq recuerda que esta el Let para poder resolver

    Let Clause (Visual Basic)

    en este podrias resolver lo del valor, entonces usar

    Dim result = From dat In listaDatos _

                        Let foto1 = IIf(dat.fotografias.Count() >= 1, dat.fotografias.ElementAt(0).docWeb.ToString() _

                        Let foto2 = IIf(dat.fotografias.Count() >= 2, dat.fotografias.ElementAt(1).docWeb.ToString() _

                        Select New CLI_UN(foto1, foto2)

     

    por supuesto esto es solo una idea, seguro se pueda mejorar

    sino usas linq podria hacer

    Dim foto1 As String = Nothing
    
    Dim foto2 As String = Nothing
    
    If dat.fotografias.Count() >= 1 Then
    
       foto1 = dat.fotografias.ElementAt(0).docWeb.ToString()
    
    End If
    
    If dat.fotografias.Count() >= 2 Then
    
       foto2 = dat.fotografias.ElementAt(1).docWeb.ToString()
    
    End If
    
    Dim nInmueblesUN  As New CLI_UN(foto1, foto2)


    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina
    miércoles, 5 de octubre de 2011 12:08
  •  
    Puedes usar Count() en conjunto con ElementAt:
     
    if (dat.fotografias.Count() > 0) then
        set nInmueblesUN = New CLI_UN(dat.fotografias.ElementAt(0).docWeb.ToString, dat.Fotografias.ElementAt(1).docWeb.ToString)
    end if
     
    Saludos.


    Fernando A. Gómez F.
    fermasmas.wordpress.com
    Galería de ejemplos
    miércoles, 5 de octubre de 2011 21:55
  • También, para no ejecutar doble, puedes hacer uso de Take.

    http://msdn.microsoft.com/en-us/library/bb503062.aspx

     

    dim fotos = dat.fotografías.Take(2).ToArray();
    
    dim foto1 = IIf(fotos.Length > 0, fotos(0).ToString, Nothing)
    dim foto2 = IIf(fotos.Length > 1, fotos(1).ToString, Nothing)
    


    ¿Te sirve así?

    ¡Saludos!



    Fernando A. Gómez F.
    fermasmas.wordpress.com
    Galería de ejemplos
    • Marcado como respuesta arseneonly jueves, 6 de octubre de 2011 7:05
    miércoles, 5 de octubre de 2011 22:14