.NET相当于Java的List.subList()?

rip*_*234 14 .net java collections list sublist

是否有一个.NET相当于Java的的List.subList(),工程上IList<T>

Kam*_*rey 10

使用LINQ

list.Skip(fromRange).Take(toRange - fromRange)
Run Code Online (Sandbox Code Playgroud)

  • @Kamarey:很公平,但是解决方案应该有一个免责声明.一般来说,似乎有办法达到你想要的东西,但没有单一的1:1匹配的子列表()(这不是一个问题,但应该注意的). (3认同)
  • 这是否将视图返回到原始列表或范围的副本? (2认同)

Raz*_*zie 9

对于通用List<T>,它是GetRange(int, int)方法.

编辑:请注意,这是浅拷贝,而不是原始的"视图".我不认为C#提供了确切的功能.

Edit2:正如Kamarey所指出的,你可以有一个只读视图:

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
Run Code Online (Sandbox Code Playgroud)

以上将打印7,42,9.

  • 从MSDN文档(http://msdn.microsoft.com/en-us/library/21k0e39c.aspx)看起来似乎不一样:GetRange()返回一个浅表副本,而subList()返回一个视图(即对subList()的更改将反映在原始List中!) (2认同)