Esiste un equivalente .NET di Java List.subList()
che funziona su IList<T>
?.NET equivalente di List.subList() di Java?
risposta
utilizzando LINQ
list.Skip(fromRange).Take(toRange - fromRange)
Per il generico List<T>
, è il metodo GetRange(int, int)
.
Modifica: si noti che questa è una copia poco profonda, non una "vista" sull'originale. Non penso che C# offra quella funzionalità esatta.
Edit2: come sottolinea Kamarey, è possibile avere una vista di sola lettura:
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
È possibile che questo stamperà 7, 42, 9.
Dalla documentazione di MSDN (http://msdn.microsoft.com/en-us/library/21k0e39c.aspx) lo fa non sembra essere lo stesso: GetRange() restituisce una copia superficiale, mentre subList() restituisce una vista (ad es. le modifiche alla sottocartella() si rifletteranno nella lista originale!) –
ok hai ragione. Non sono sicuro se questo è il requisito esatto, ma modifico la mia risposta per riflettere questo. – Razzie
GetRange
è la vostra risposta
Ancora: non è esattamente * esattamente la stessa cosa, in quanto restituisce una copia superficiale invece di una vista. Restituire una vista abilita alcuni trucchi piuttosto ingegnosi (non è quindi necessario fornire un metodo RemoveRange(), poiché può essere facilmente scritto come list.subList (x, y) .clear()). –
Devo dire onestamente che non vedo davvero i benefici. Inoltre, removeRange() e subList.clear() non sembrano la stessa cosa, in quanto la cancellazione non dovrebbe essere la stessa cosa della rimozione di un intervallo. Ma vabbè :-) – Razzie
Non appena si strappa il concetto che subList() restituisce una vista nell'Elenco originale (e non una copia), diventerà ovvio che someList.subList (1,3) .clear() rimuovere oggetti dall'elenco originale. E la parte più importante non è se è migliore o meno, ma che subList() e GetRange() non fanno la stessa cosa, quindi non dovrebbero essere presentati come equivalenti (almeno non senza un disclaimer). –
- 1. Java equivalente a .NET System.InvalidOperationException
- 2. Java equivalente a .Net NotSupportedException
- 3. . Equivalente .NET di StrCmpLogicalW
- 4. .net equivalente di htmlunit?
- 5. Equivalente Java della classe di versione di .NET?
- 6. Equivalente Java per MEF in .NET
- 7. Esiste .Net TypeConverter equivalente in Java
- 8. Qual è equivalente a .NET di InterruptedException (Java)?
- 9. Equivalente di caricatori di classi in .NET
- 10. Equivalente Java di C# system.beep?
- 11. Equivalente Java di Reflection.Emit
- 12. java equivalente di swfobject
- 13. Java equivalente di OpenLayers
- 14. Equivalente .NET di Strumento di cattura
- 15. .NET equivalente di forceDirectory di Delphi
- 16. Equivalente di attività Libreria parallela in Java
- 17. Esiste un equivalente Java di SignalR?
- 18. Equivalente a SoftReference in .net?
- 19. equivalente JMS in .Net
- 20. Equivalente Maven per .Net
- 21. Linux Mono Equivalente di .NET Servizio Windows
- 22. Esiste un equivalente di JMS in .NET?
- 23. equivalente in C++ del Task.Delay di .NET?
- 24. Esiste un equivalente di "gettimeofday" in .NET
- 25. Equivalente PHP di .Net Entity Framework
- 26. Equivalente JAXB .NET?
- 27. .NET equivalente per GetLastInputInfo?
- 28. C# Equivalente di Java IdentityHashMap
- 29. Oracle equivalente di Varargs Java
- 30. equivalente di ungetc In java
Restituisce una visualizzazione nell'Elenco originale o in una copia dell'intervallo? –
Funziona su IList, non solo su List, questo è quello che stavo cercando. – ripper234
@ Joachim Sauer: questa è una query ed il suo risultato dipende da come viene valutato. Durante la valutazione, scorre attraverso gli elementi dell'elenco applicando alcune regole. Questo non è analogo per la funzione di sottolista di Java, ed è sbagliato confrontarli in questo caso. – Kamarey