C# 使用GetRange获取所有剩余项目

C# 使用GetRange获取所有剩余项目,c#,linq,list,syntactic-sugar,C#,Linq,List,Syntactic Sugar,最近,我对函数感兴趣。它可以从更大的列表中检索子列表。用法需要两个参数: List<T> SubList = List<T>.GetRange(10, 20) //Get 20 items, starting from index 10 List SubList=List.GetRange(10,20)//从索引10开始获取20项 但是,如果我想使用此函数从特定索引中提取剩余的所有项,该怎么办 List<T> RemainingItemsFromList

最近,我对
函数感兴趣。它可以从更大的列表中检索子列表。用法需要两个参数:

List<T> SubList = List<T>.GetRange(10, 20) //Get 20 items, starting from index 10
List SubList=List.GetRange(10,20)//从索引10开始获取20项
但是,如果我想使用此函数从特定索引中提取剩余的所有项,该怎么办

List<T> RemainingItemsFromList = MyList.GetRange(7, /*REST*/) //What can I insert into REST to make it retrieve everything?
List RemainingItemsFromList=MyList.GetRange(7,/*REST*/)//我可以在REST中插入什么使它检索所有内容?
有吗

  • 任何内置的
    restoflist
    语句,而不执行
    Length-Index
    之类的操作
  • 是否有替换功能(已存在)
  • 还有其他选择吗

还是我只是做错了什么?

由于
列表
没有提供具有所需功能的内置方法,您可以选择:

1) 自己创建扩展方法:

public static class ListExtensions {
    public static List<T> GetRange<T>(this List<T> list, int start) {
        return list.GetRange(start, list.Count - start);
    }
}

var remaining = list.GetRange(7);

list.Count-start
,例如
MyList.Count-7
您可以使用LINQ的Skip(7).ToList(),但效率会低一些。@IvanStoev我在问题中指定了我不想做的
Length-Index
。我明白了。我猜你想要的太多了。而LINQ
Skip
是如此微不足道,以至于我永远不会认为有人会要求它:)
var remaining = list.Skip(7).ToList(); // a bit less efficient, but usually that does not matter