我有一个列表,需要从中选出当前for循环中前5个元素和后5个元素组成的子列表,总共10个元素。忽略循环中的当前元素。
我目前是这样实现的:
var currentIndex = myList.ClassName.FindIndex(a => a.Id == plate.Id);
var fromIndex = currentIndex - 5;
if (fromIndex < 0) fromIndex = 0;
var toIndex = currentIndex + 5;
if ((myList.ClassName.ElementAtOrDefault(toIndex) == null))
toIndex = myList.ClassName.Count - 1;
var subsetList = myList.ClassName.GetRange(fromIndex, (11));
comparisonPlates.RemoveAt(currentIndex);
然而,我相信使用LINQ有更好的、更高效的方法来做到这一点,有何指导?
List.GetRange
正是你所需要的。 - Tim Schmelter