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 に答える