2014-03-07 1 views
0

나는 다음과 같은 클래스가 : C#을 Linq에

public class MyItem 
{ 
    public string Email; 
    public int Value1;  
    public datetime Value2; 
    //etc 
} 

public class MyItems : List<MyItem> {} 

가 나는 MyItems 무작위 항목의 목록 객체를 채울 수 있습니다. 이제는이 목록을 작은 목록으로 나누어야합니다. 각 목록에는 동일한 'Email'속성이있는 항목 만 포함됩니다.

Linq?

myItems.GroupBy(x => x.Email).Select(g => g.ToList()); 

이것은 IEnumerable<List<MyItem>>

를 반환합니다 또는 당신은 ToDictionary을 사용할 수 있으며 Email하여 그룹에 액세스 할 수 있습니다 : 당신이 List<MyItem>이있는 경우

+2

가 왜'목록 '에서 클래스를 상속 않습니다 사용할 수있는 목록의 컬렉션을 얻을? –

+0

특별한 이유가 없습니다. 특정 클래스를 추가 할 수도 있습니다. –

+3

예, GroupBy (또는 동등한 쿼리 식)를 사용하여 LINQ에서 절대적으로 달성 할 수 있습니다. 자, 무엇을 시도하고 무슨 일이 일어 났습니까? –

답변

1

당신은 단순히 GroupBy 사용할 수 있습니다

myItems.GroupBy(x => x.Email).ToDictionary(x => x.Key, x => x.ToList()); 
0

시험해보기

여기
MyItems myItems = new MyItems(); 

//Populate here 

myItems.GroupBy(x => x.Email).Select(group => group.ToList()); 

당신은

+0

Linq를 사용하면 어떻게 생겼습니까? –

+2

umm is linq –

+1

@ Ivan-MarkDebono : linq을 표현하는 두 가지 다른 방법을 혼동스럽게 생각할 수도 있습니다. 'from myItems Select blah' 타입 구문은 실행 전에 컴파일러가 메소드 구문으로 변환 한 설탕입니다. – Chris