IEnumerable
Linq-To-Objects でスプライスする組み込みの方法はありますか?
何かのようなもの:
List<string> options = new List<string>(); // Array of 20 strings
List<string> lastOptions = options.Splice(1, 5); // Gets me all strings 1 through 5 into a new list
IEnumerable
Linq-To-Objects でスプライスする組み込みの方法はありますか?
何かのようなもの:
List<string> options = new List<string>(); // Array of 20 strings
List<string> lastOptions = options.Splice(1, 5); // Gets me all strings 1 through 5 into a new list
試す:
List<string> options = new List<string>();
List<string> lastOptions = options.Skip(0).Take(5).ToList();
skip は x 要素をスキップする方法を示すために使用されます (tnx drch)
次のようなものを作成できます: (拡張メソッド)
public static class SpliceExtension
{
public static List<T> Splice<T>(this List<T> list, int offset, int count)
{
return list.Skip(offset).Take(count).ToList();
}
}
ただし、これはリストでのみ利用できます。
また、それを使用することができますIEnumerable<>
public static class SpliceExtension
{
public static IEnumerable<T> Splice<T>(this IEnumerable<T> list, int offset, int count)
{
return list.Skip(offset).Take(count);
}
}
このように、リストは完全には繰り返されません。
次のように使用します。
List<string> lastOptions = options.Splice(1, 5).ToList();
この方法は、複数の linq クエリで使用できるため、より気に入っています。