The World’s Largest Online Community for Developers

'; c# - Splice IEnumerable with Linq - LavOzs.Com

Is there an in-built way to splice an IEnumerable in Linq-To-Objects?

Something like:

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 is used to show how to skip x elements (tnx drch)

You could create something like this: (extension method)

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();

But this will only be available to Lists.

You could also use it on 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);

This way the List isn't iterated completely.

use it like:

List<string> lastOptions = options.Splice(1, 5).ToList();

I like this way more, because it can be used on several linq queries.

LINQ query on a DataTable
Dynamic LINQ OrderBy on IEnumerable<T> / IQueryable<T>
Deep cloning objects
Multiple “order by” in LINQ
LINQ's Distinct() on a particular property
Creating a comma separated list from IList<string> or IEnumerable<string>
Get int value from enum in C#
IEnumerable vs List - What to Use? How do they work?
Group by in LINQ