none
¿Cómo puedo retornar una sublista con una función?

    Pregunta

  • Si tengo una lista de Algo, digamos:

    Dim lisEnteros as List(of Algo)

    ...y en un momento determinado del código puede estar activo solo un elemento de lisEnteros indicado digamos por nIndiceActivo que representa el subíndice del elemento activo de la lista.

    Lo que quiero hacer es una función que me devuelva una sublista dependiendo del valor de nIndiceActivo, así:

    Si nIndiceActivo <= 20 ==> Retornar  una sublista de los primeros veinte elementos de la lista

    Si nIndiceActivo > 20 ==> Retornar una sublista del resto de elementos de la lista después del 20

    O sea la función debe retornar una sublista. No les pido necesariamente la función, solo les pido que me indiquen cómo extraigo esa sublista para retornarla, no sé si habrá una forma directa, o sea sin recorrer la lista con un for.



    lunes, 9 de enero de 2017 0:46

Respuestas

  • James2016-2,

    Puedes utilizar el método GetRange(índice, cuenta):

    - Función

    Private Function ObtenerLista(Lista As List(Of Integer), Indice As Integer) As List(Of Integer)
    
    	Return Lista.GetRange(IIf(Indice > 0, Indice, 0),
    						  IIf(Indice > 0, Lista.Count - Indice, Indice * -1))
    
    End Function

    - Uso

    Dim ListaEnteros As New List(Of Integer) From {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12}
    
    Dim SubListaEnteros1 = ObtenerLista(ListaEnteros, 5)
    'Resultado: 6, 7, 8, 9, 10, 11, 12
    
    Dim SubListaEnteros2 = ObtenerLista(ListaEnteros, -5)
    'Resultado: 1, 2, 3, 4, 5
    


    Espero que la información proporcionada te haya sido de utilidad, quedo atento a tus comentarios.
    • Marcado como respuesta James2016-2 lunes, 9 de enero de 2017 1:27
    lunes, 9 de enero de 2017 1:14

Todas las respuestas

  • James2016-2,

    Puedes utilizar el método GetRange(índice, cuenta):

    - Función

    Private Function ObtenerLista(Lista As List(Of Integer), Indice As Integer) As List(Of Integer)
    
    	Return Lista.GetRange(IIf(Indice > 0, Indice, 0),
    						  IIf(Indice > 0, Lista.Count - Indice, Indice * -1))
    
    End Function

    - Uso

    Dim ListaEnteros As New List(Of Integer) From {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12}
    
    Dim SubListaEnteros1 = ObtenerLista(ListaEnteros, 5)
    'Resultado: 6, 7, 8, 9, 10, 11, 12
    
    Dim SubListaEnteros2 = ObtenerLista(ListaEnteros, -5)
    'Resultado: 1, 2, 3, 4, 5
    


    Espero que la información proporcionada te haya sido de utilidad, quedo atento a tus comentarios.
    • Marcado como respuesta James2016-2 lunes, 9 de enero de 2017 1:27
    lunes, 9 de enero de 2017 1:14
  • Gracias, GenRange era!!
    lunes, 9 de enero de 2017 1:27