¿Hay un equivalente .NET de Java List.subList()
que funciona en IList<T>
?.NET equivalente de Java's List.subList()?
Respuesta
usando LINQ
list.Skip(fromRange).Take(toRange - fromRange)
Para el genérico List<T>
, es el método GetRange(int, int)
.
Editar: tenga en cuenta que esta es una copia superficial, no una 'vista' en el original. No creo que C# ofrezca esa funcionalidad exacta.
Edit2: como señala Kamarey, usted puede tener una vista de sólo lectura:
List<int> integers = new List<int>() { 5, 6, 7, 8, 9, 10, 11, 12 };
IEnumerable<int> view = integers.Skip(2).Take(3);
integers[3] = 42;
foreach (int i in view)
// output
Lo anterior imprimirá 7, 42, 9.
De la documentación de MSDN (http://msdn.microsoft.com/en-us/library/21k0e39c.aspx) que haga no parece ser el mismo: GetRange() devuelve una copia superficial, mientras que subList() devuelve una vista (es decir los cambios en la sublista() se reflejarán en la lista original!) –
bien, tienes razón. No estoy seguro de si este es el requisito exacto, pero voy a editar mi respuesta para reflejar eso. – Razzie
GetRange
es su respuesta
Nuevamente: no es * exactamente * lo mismo, ya que devuelve una copia superficial en lugar de una vista. Devolver una vista permite algunos trucos bastante ingeniosos (por ejemplo, no es necesario proporcionar un método RemoveRange(), ya que se puede escribir fácilmente como list.subList (x, y) .clear()). –
Honestamente debo decir que realmente no veo los beneficios. Además, removeRange() y subList.clear() no suenan como lo mismo, ya que borrar no debería ser lo mismo que eliminar un rango. Pero bueno :-) – Razzie
Tan pronto como asimile el concepto de que subList() devuelve una vista a la lista original (y no a una copia), será obvio que someList.subList (1,3) .clear() eliminar objetos de la lista original. Y la parte más importante no es si es mejor o no, sino que subList() y GetRange() no hacen lo mismo, por lo que no se deben presentar como equivalentes (al menos no sin una exención de responsabilidad). –
- 1. .net equivalente de htmlunit?
- 2. .NET equivalente de StrCmpLogicalW
- 3. .NET equivalente de size_t
- 4. GWT equivalente para .NET?
- 5. JMS equivalente en .Net
- 6. ShellExecute equivalente en .NET
- 7. .NET JAXB equivalente?
- 8. .NET equivalente para GetLastInputInfo?
- 9. equivalente de Maven para .Net
- 10. Java equivalente a .NET System.InvalidOperationException
- 11. ¿Hay una RRDTool .net equivalente
- 12. .NET equivalente a Delphi's forceDirectory
- 13. Equivalente de cargadores de clase en .NET
- 14. .NET Equivalente de la herramienta de recorte
- 15. Java ¿Equivalente a DateTime.Parse de .NET?
- 16. .Net equivalente al AssertionError de Java
- 17. Java equivalente a la NotSupportedException de .Net
- 18. ¿Hay un equivalente de JMS en .NET?
- 19. equivalente de Java para MEF en .NET
- 20. ¿Hay .NET equivalente a ActionList de Delphi?
- 21. El equivalente .NET de bibliotecas estáticas?
- 22. ¿Qué es .NET equivalente de InterruptedException (Java)?
- 23. Java Equivalente a String.Format de .NET
- 24. Equivalente de FileSystemWatcher (.NET) en Cocoa
- 25. Qt equivalente al enlace de datos .NET?
- 26. ¿Hay un equivalente de "gettimeofday" en .NET
- 27. Linux Mono Equivalente de .NET Windows Service
- 28. ¿Existe un .Net equivalente a java.util.concurrent.Executor?
- 29. factorygirl/maquinista equivalente en C# /. Net
- 30. ¿Hay equivalente .NET TypeConverter en Java
¿Esto devuelve una vista en la lista original o una copia del rango? –
Funciona en IList, no solo en List, esto es lo que estaba buscando. – ripper234
@Joachim Sauer: Esta es una consulta y su resultado depende de cómo se evalúa. Mientras evalúa, recorre los elementos de la lista aplicando alguna regla. Esto no es directamente analógico para la función subList de Java, y es un error compararlos en este caso. – Kamarey