2016-06-30 18 views
2

Ich habe einen generischen Container, der Arrayzugriff hat. Ich möchte einen Bereich (z. B. Elemente 3 bis 10) in einen anderen Container (in diesem Fall eine Liste) kopieren.Kopieren eines Bereichs von einem Container zu einem anderen Container

Ich kann über den Container iterieren, aber ich hoffte auf etwas eleganteres und möglicherweise schneller.

Irgendwelche Ideen?

+0

Wenn Ihr Zielcontainer auch ein Array wäre, wäre Array.Copy möglicherweise schneller https://msdn.microsoft.com/en-us/library/system.array.copy%28v=vs.110%29.aspx ? f = 255 & MSPPError = -2147217396 Da das Ziel eine Liste ist, glaube ich, dass das Iterieren das Beste ist, was Sie tun können. –

+0

Array.Copy kopiert nur das erste Element. Gibt es eine Möglichkeit, es zu denken, dass das n-te Element das erste ist? –

+1

Also, was * ist * dein Container? –

Antwort

4

Wenn Ihr „Container“ IEnumerable implementiert, können Sie LINQ verwenden:

var list = container.Skip(3).Take(7).ToList(); 

Es wird nichts schneller als Iteration, wenn Sie mit einer Standard-List<T> Instanz wollen am Ende.

+0

Das ist so eine großartige Antwort. Ich kann es nicht verwenden, da mein Container IEnumerable nicht implementiert, aber ich mag die Antwort so sehr, dass ich das möglicherweise beheben muss. –

Verwandte Themen