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中有一种很好的方法可以做到这一点吗?
您可以使用分组轻松跳过第一个集合,但要获得枚举集合有点困难。我认为这应该做到:
animals.GroupBy(a => a)
.Skip(2)
.Take(2)
.SelectMany(a => a);
GroupBy
和Skip
允许我们将它们作为组来处理,从而获得您的第一点需求。然后我们只需要在最后用SelectMany
重新扩展分组。
var animals=new List{"duck","鸭子","鸭","鹅","鹅"、"牛"、"奶牛"、"母牛"、"兔子"}.AsQueryable();
var names=动物。Distinct()。Skip(2)。Take(2).ToList();
var结果=动物。其中(name=>names.Contains(name));