C#Linq拡張
IEnumerable<IEnumerable<T>> foo(this IEnumerable<T> source, int count) {
IEnumerable<T> top = source.Take(count);
IEnumerable<T> others = source.Skip(count);
while(top.Count() > 0) {
yield return top;
top = others.Take(count);
others = others.Skip(count);
}
}

このメソッド適切な名前を付けてください
使い方の例はこんな感じ

// 1000要素ずつファイルに書き込む
int n = 0;
foreach(var i in source.foo(1000)) {
WriteToFile((n++).ToString()+".txt", i);
}