我有一个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中有这么好的方法吗?
答案 0 :(得分:3)
您可以使用分组轻松跳过第一个分组,但获取枚举的设置有点棘手。我认为应该这样做:
animals.GroupBy(a => a)
.Skip(2)
.Take(2)
.SelectMany(a => a);
GroupBy
和Skip
让我们以群组的形式处理这些问题,从而获得您的要求的第一位。然后我们在最后用SelectMany
重新扩展分组。
答案 1 :(得分:0)
var animals = new List {“duck”,“duck”,“duck”,“goose”, “鹅”,“牛”,“牛”,“牛”,“兔子”} .AsQueryable();
var names = animals.Distinct()。Skip(2).Take(2)。ToList();
var result = animals.Where(name =&gt; names.Contains(name));