.NET equivalent of Java's List.subList()?

2019-02-16 08:09发布

问题:

Is there a .NET equivalent of Java's List.subList() that works on IList<T>?

回答1:

using LINQ

list.Skip(fromRange).Take(toRange - fromRange)


回答2:

For the generic List<T>, it is the GetRange(int, int) method.

Edit: note that this is a shallow copy, not a 'view' on the original. I don't think C# offers that exact functionality.

Edit2: as Kamarey points out, you can have a read-only view:

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

The above will print 7, 42, 9.



回答3:

GetRange is your answer