2012-12-06 4 views
25

groupBy와 ToLookup 확장 방법의 차이점은 무엇입니까?조회 vs. groupby

public class Person 
{ 
    public uint Id { get; set; } 
    public string Name { get; set; } 
    public DateTime Birthday { get; set; } 
} 


List<Person> People { get; set; } 

지금 내가 위의 확장 방법을 사용할 수 있습니다 :

var groupedPeople = People.GroupBy((x) => x.Id); 

var lookupPeople = People.ToLookup((x) => x.Id); 

그 문장의 차이는 무엇

은 우리가 같은 개체의 목록을 보자? 사전에

감사합니다.

마르코 B.는

+0

"차이"를 정의하십시오 ... 하나의 차이는 "반환 값"이 될 수 있으며, 또 다른 구체적인 구현은 ... 정교합니다! –

+0

http://bytes.com/topic/c-sharp/answers/777912-linq-groupby-vs-tolookup –

+1

http://stackoverflow.com/questions/1337539/ilookuptkey-tval-vs-igroupingtkey-tval –

답변

50

ToLookup즉시 실행을 사용하고, 당신이 키 그룹을 조회 할 수있는 ILookup를 반환합니다.

GroupBy는 실행을 연기 사용하고, 단지 존재의 어떤 아이디어, 각 그룹이 처음 발견 된 순서 (그래서 첫 번째 그룹은 예를 들어, 소스 데이터의 첫 번째 요소를 포함합니다)에서 사용자 그룹을 반환 열쇠로 나중에 그룹을 볼 수 있습니다. 결과를 반복 할 때마다 다시 그룹화해야합니다.

기본적으로 사용해야하는 것은 결과로 수행 할 작업에 따라 다릅니다. 한 번만 반복해서 반복 할 경우 (예 : 추가 변형) GroupBy이 좋습니다. 여러 작업에 대한 모음으로 유지하려는 경우 즉시 성격이 ToLookup 인 것이 유용합니다.

9
  1. ToLookup이 버퍼링됩니다. groupBy는 그룹을 반복합니다.
  2. groupBy는 deffered 실행을 사용하고 ToLookup은 즉치를 사용합니다.