LINQ:跳过并重复一遍

时间:2014-10-17 01:46:32

标签: c# linq duplicates skip take

我有一个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中有这么好的方法吗?

2 个答案:

答案 0 :(得分:3)

您可以使用分组轻松跳过第一个分组,但获取枚举的设置有点棘手。我认为应该这样做:

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

GroupBySkip让我们以群组的形式处理这些问题,从而获得您的要求的第一位。然后我们在最后用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));