2014-10-17 11 views
2

나는 모든 것이 이미 그룹화 된 IQueryable 포함하는 항목을, 그래서 뭔가 내가LINQ : 건너와 가지고 중복

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

을 할 경우

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

처럼 나는 "duck", "goose"을 얻을 것입니다. 그러나 처음 두 그룹의 고유 항목을 건너 뛰고 세 번째와 네 번째 항목을 가져 오려고합니다(). LINQ에서이 작업을 수행하는 좋은 방법이 있습니까?

답변

3

그룹화를 사용하면 첫 번째 항목을 쉽게 건너 뛸 수 있지만 열거 형 세트를 가져 오는 것은 약간 까다 롭습니다. 나는이 그것을해야한다고 생각 :

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

Skip 우리가 귀하의 요구 사항의 첫 번째 비트를 얻을 그룹, 이러한 처리 할 수 ​​있습니다. 마지막으로 그룹 번호를 SelectMany으로 다시 확장하면됩니다.

+1

똑똑한 생각. : p –

+0

대단 했어. 감사! –

0

VAR 동물 = 새 목록 { "오리", "오리", "오리", "거위", "거위", "소", "소", "소", "토끼"}. AsQueryable();

var names = animals.Distinct(). Skip (2) .Take (2) .ToList();

var result = animals.Where (name => names.Contains (name));