用Linq拼接IEnumerable

时间:2013-09-27 13:44:55

标签: c# linq linq-to-objects

是否有一种内置方法可以在Linq-To-Objects中拼接IEnumerable

类似的东西:

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

1 个答案:

答案 0 :(得分:17)

尝试:

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就不会完全迭代。

使用它像:

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

我更喜欢这种方式,因为它可以在几个linq查询中使用。