2

我有一个IQueryable包含项目,其中所有内容都已分组,因此类似于

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

如果我做

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

我会得到"duck", "goose"。但是,我想跳过前两组不同的条目并获得第三和第四组 ( "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 动物 ​​= 新列表 { “鸭”、“鸭”、“鸭”、“鹅”、“鹅”、“牛”、“牛”、“牛”、“兔子” }.AsQueryable();

var 名称 = 动物.Distinct().Skip(2).Take(2).ToList();

var 结果 = 动物.Where(name => names.Contains(name));

于 2014-10-17T02:09:00.127 回答