звучит как
IEnumerator<T> GetNth<T>(List<T> list, int n) {
for (int i=0; i<list.Count; i+=n)
yield return list[i]
}
сделает трюк. Я не вижу необходимости использовать Linq или лямбда-выражения.
EDIT:
Сделай это
public static class MyListExtensions {
public static IEnumerable<T> GetNth<T>(this List<T> list, int n) {
for (int i=0; i<list.Count; i+=n)
yield return list[i];
}
}
и вы пишете в LINQish способ
from var element in MyList.GetNth(10) select element;
2-е редактирование :
Чтобы сделать его еще более LINQish
from var i in Range(0, ((myList.Length-1)/n)+1) select list[n*i];