2016-12-25 88 views
2

最近,我對List.GetRange()函數感興趣。它可以從更大的列表中檢索子列表。使用需要兩個參數GetRange獲取所有剩餘的物品

List<T> SubList = List<T>.GetRange(10, 20) //Get 20 items, starting from index 10 

但是如果我想採取每個其餘項目從一個特定的指數,有這個功能嗎?

List<T> RemainingItemsFromList = MyList.GetRange(7, /*REST*/) //What can I insert into REST to make it retrieve everything? 

  • 任何內置RestOfTheList聲明沒有做這樣的事情Length - Index
  • 任何替換函數(已存在)?
  • 還有其他的選擇嗎?

還是我只是做錯了什麼?

+0

'list.Count - start',例如'MyList.Count - 7' –

+0

您可以使用LINQ的Skip(7).ToList(),但效率稍差。 – Evk

+0

@IvanStoev我在問題中指定我不想做'長度 - 索引'。 – devRicher

回答

1

由於List不提供所需的功能內置的方法,您的選擇是:

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); 

2)使用LINQ:

var remaining = list.Skip(7).ToList(); // a bit less efficient, but usually that does not matter