C#なら拡張メソッドがんがん作ってそういうのをチェックしながらのWhereとか例外メッセージつきのSelectとかいろいろ作りゃいいんじゃねーの。
0スタートのindexがくっついてくるSelectWithCountとか自分的に便利。