2

IQueryableすべてがすでにグループ化されているアイテムを含むので、次のようなものがあります

var animals = new List<string>{"duck", "duck", "duck", "goose", "goose", "cow", "cow", "cow", "rabbit"}.AsQueryable();

私が行った場合

animals.Skip(2).Take(2);

私は得るでしょう"duck", "goose"。ただし、最初の 2 つの異なるエントリのグループをスキップして、3 番目と 4 番目のエントリを取得したいと考えています ( "cow", "cow", "cow", "rabbit")。LINQ でこれを行う良い方法はありますか?

4

2 に答える 2

3

グループ化を使用して最初のものを簡単にスキップできますが、列挙されたセットを取得するのは少し面倒です。私はこれがそれを行うべきだと思います:

animals.GroupBy(a => a)
       .Skip(2)
       .Take(2)
       .SelectMany(a => a);

これらGroupBySkipグループとして処理し、要件の最初のビットを取得します。次に、最後に を使用してグループ化を再展開しますSelectMany

于 2014-10-17T01:50:13.990 に答える
0

var animal = new List { "アヒル", "アヒル", "アヒル", "ガチョウ", "ガチョウ", "牛", "牛", "牛", "ウサギ" }.AsQueryable();

var names = animal.Distinct().Skip(2).Take(2).ToList();

var result = Animals.Where(name => names.Contains(name));

于 2014-10-17T02:09:00.127 に答える