Hola a todos
como ya mas o menos me defiendo jejej ya casi no pregunto :) pero no se como hacer que este codigo
em ves de empezar con split(0) empieze con el split(1) me explico
tengo un arreglo de x numeros (1, 2, 3, 4, 5) y si quiero hacer una union o concatenacion de ese arreglo por ejemplo ( 1 2 3 ) tengo que tomar split(0),split(1),split(2)
cuando lo que yo quiero es split(1),split(2),split(3) y no tomar en cuenta el split(0),he provado con Skip(1) pero no me vale ya que me salta el numero inicial
un poco mas claro :)
arreglo
1, 2, 3, 4, 5
asi es ahora
1 = split(0)
2 = split(1)
3 = split(2)
nesecito de esta forma
1 = split(1)
2 = split(2)
3 = split(3)
Dim arregloSumasa() As Integer = {1, 2, 3, 4, 5}
Dim split As IEnumerable(Of IEnumerable(Of Integer)) =
SplitIntoParts(collection:=arregloSumasa, amount:=1, fillEmpty:=True)
Public Shared Function SplitIntoParts(Of T)(ByVal collection As IEnumerable(Of T),
ByVal amount As Integer,
ByVal fillEmpty As Boolean) As IEnumerable(Of IEnumerable(Of T))
Return From index As Integer In Enumerable.Range(0, CInt(Math.Ceiling(collection.Count() / amount)))
Select If(Not fillEmpty,
collection.Skip(index * amount).Take(amount),
If((collection.Count() - (index * amount)) >= amount,
collection.Skip(index * amount).Take(amount),
collection.Skip(index * amount).Take(amount).
Concat(From i As Integer
In Enumerable.Range(0, amount - (collection.Count() - (index * amount)))
Select DirectCast(Nothing, T))))
End Function
Saludos
Luis
Fíjate en el nuevo parámetro que le añadí:
Public Shared Function SplitIntoParts(Of T)(ByVal collection As IEnumerable(Of T),
ByVal amount As Integer,
ByVal fillEmpty As Boolean,
Optional ByVal add As Integer = 0,
Optional ByVal skip As Integer = 0
) As IEnumerable(Of IEnumerable(Of T))
Dim emptyAdded As IEnumerable(Of IEnumerable(Of T)) = Enumerable.Repeat({DirectCast(Nothing, T)}, add)
Return emptyAdded.Concat(
From index As Integer In Enumerable.Range(0, CInt(Math.Ceiling(collection.Count() / amount)))
Select If(Not fillEmpty,
collection.Skip(index * amount).Take(amount),
If((collection.Count() - (index * amount)) >= amount,
collection.Skip(index * amount).Take(amount),
collection.Skip(index * amount).Take(amount).
Concat(From i As Integer
In Enumerable.Range(0, amount - (collection.Count() - (index * amount)))
Select DirectCast(Nothing, T))))
).Skip(skip)
End Function
De esa manera, si le asignas un valor de add:=1 al llamar a la función, le añadiras esa cantidad especificada de IEnumerable(Of T) (vacías) al pricipio de la colección, y, aparte, si le asignas un valor de skip:=X, la función devolverá el IEnumerable(Of IEnumerable(Of T)) ignorando la cantidad especificada de elementos de tipo IEnumerable(Of T) al principio de la colección.
Saludos
Cita de: Eleкtro en 9 Julio 2015, 17:02 PM
Fíjate en el nuevo parámetro que le añadí:
Public Shared Function SplitIntoParts(Of T)(ByVal collection As IEnumerable(Of T),
ByVal amount As Integer,
ByVal fillEmpty As Boolean,
Optional ByVal add As Integer = 0,
Optional ByVal skip As Integer = 0
) As IEnumerable(Of IEnumerable(Of T))
Dim emptyAdded As IEnumerable(Of IEnumerable(Of T)) = Enumerable.Repeat({DirectCast(Nothing, T)}, add)
Return emptyAdded.Concat(
From index As Integer In Enumerable.Range(0, CInt(Math.Ceiling(collection.Count() / amount)))
Select If(Not fillEmpty,
collection.Skip(index * amount).Take(amount),
If((collection.Count() - (index * amount)) >= amount,
collection.Skip(index * amount).Take(amount),
collection.Skip(index * amount).Take(amount).
Concat(From i As Integer
In Enumerable.Range(0, amount - (collection.Count() - (index * amount)))
Select DirectCast(Nothing, T))))
).Skip(skip)
End Function
De esa manera, si le asignas un valor de add:=1 al llamar a la función, le añadiras esa cantidad especificada de IEnumerable(Of T) (vacías) al pricipio de la colección, y, aparte, si le asignas un valor de skip:=X, la función devolverá el IEnumerable(Of IEnumerable(Of T)) ignorando la cantidad especificada de elementos de tipo IEnumerable(Of T) al principio de la colección.
Saludos
Gracias Elektro
Funciona de maravilla jejejej lastima que ahora no tenga tantas preguntas JAJAJJA siempre que iba a mirar tus respuestas estaba acojonado por tus reaccion (regaños) jejeje de verdad que funcionaron, ya que solo por no leerlos jejej me buscaba la vida y
para los que empiezan con este lenguaje tienen buen profe jejej
De nuevo gracias
Luis
Cita de: luis456 en 9 Julio 2015, 17:43 PMsiempre que iba a mirar tus respuestas estaba acojonado por tus reaccion (regaños) jejeje de verdad que funcionaron, ya que solo por no leerlos jejej me buscaba la vida y para los que empiezan con este lenguaje tienen buen profe jejej
No se yo... si en la piel de profesor consigo que mis ""alumnos"" huyan entonces no seré tan buen profe xD.
¿Qué van a pensar de mi los demás?, reconozcámoslo, no te he "regañado" tanto... jaja, solo fui lo necesariamente arisco o estricto para que supieras desenvolverte por ti mismo para resolver cosas básicas.
Ahora escribes los posts formulando preguntas publicando un ejemplo del resultado que obtienes y el que deseas obtener, y no ha sido necesario pedirte el código...
...aunque lo hagas solo para que no te "regañe" xD no lo se, pero es un cambio positivo en la calidad de la información de tus post.
Saludos!
:silbar: :silbar: :silbar: :silbar: :silbar: :silbar:
Claro que tu ayuda me sirvio de mucho y espero que a muchos mas ;-) ;-) siempre aunque que no postee, estoy dando vueltas por estos lares jejejje
saludos
Luis