LINQ:跳过并复制

本文关键字:复制 LINQ | 更新日期: 2023-09-27 18:26:46

我有一个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中有一种很好的方法可以做到这一点吗?

LINQ:跳过并复制

您可以使用分组轻松跳过第一个集合,但要获得枚举集合有点困难。我认为这应该做到:

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

GroupBySkip允许我们将它们作为组来处理,从而获得您的第一点需求。然后我们只需要在最后用SelectMany重新扩展分组。

var animals=new List{"duck","鸭子","鸭","鹅","鹅"、"牛"、"奶牛"、"母牛"、"兔子"}.AsQueryable();

var names=动物。Distinct()。Skip(2)。Take(2).ToList();

var结果=动物。其中(name=>names.Contains(name));