1

假设我有一个清单:-

var animals = new[] {"ant", "bear", "bee", ...... "monkey", ...... "zebra"};

在蜜蜂和猴子之间进行迭代的最简单方法是什么?

4

2 回答 2

3

使用SkipWhileTakeWhile扩展方法

var myAnimals = animals.SkipWhile(a => a != "bee").TakeWhile(a => a != "monkey").ToList();
于 2012-07-03T06:32:26.357 回答
0

经过多次咬牙切齿,头发拉扯并将我的头撞到墙上之后,我决定以创建自己的迭代器的简单方法来做。

public static class LinqExtensions {
    public static IEnumerable<T> InRange<T>(this IEnumerable<T> list, T first, T last) {
        int i = 0;

        while (list.Count() > i && ! list.ElementAt(i).Equals(first))
            ++i;

        while (list.Count() > i && ! list.ElementAt(i).Equals(last))
            yield return list.ElementAt(i);

        if (list.Count() > i && list.ElementAt(i).Equals(last))
            yield return list.ElementAt(i);
     }
}

现在以下工作完美: -

foreach (var x in animals.InRange("bee", "monkey")) {
    ....
}
于 2012-07-04T10:04:32.670 回答