2014-12-12 5 views
0

저는 SQL에 익숙하며 아직 linq에는 익숙하지 않습니다. 값에 따라 열을 그룹화하고 다른 열을 목록으로 그룹화하고 다른 열을 정적으로 만들려면 어떻게해야합니까? 예정적 그룹 및 그룹화 된 열로 그룹화

People | Businesses | StreetAddress 
John | Store 1 | Hello Blvd. 
John | Store 2 | Hello Blvd. 

를 들어

는 두 사람에 의해 그룹에 & StreetAddress을 필요로 가정하면 표 1

from x in ctx.People 
join ownership in ctx.Ownerships 
    on x.Id equals ownership.Owner_Id into ps 
from ownership in ps.DefaultIfEmpty() 
join Business in ctx.Businesses 
    on ownership.Business_Id equals Business.Id into ps2 
from Business in ps2.DefaultIfEmpty() 
select new PersonDTO 
{ 
    Id   = x.Id, 
    Business  = Business.Name, 
    StreetAddress = x.Addresses.FirstOrDefault().Line1 
} 
+0

SQL 쿼리를 사용하면 불가능하다고 생각합니다. StoredProcedure를 사용해야합니다. – Raghu

답변

1

를 만들기 위해

People |  Businesses     | StreetAddress 
John | ["Store 1", "Store 2"]  | Hello Blvd. 

내 LINQ 쿼리를 생성합니다.

var result = data.GroupBy(x => new { x.People, x.StreetAddress }) 
        .ToList() 
        .Select(x => new 
          { 
           People = x.Key.People, 
           Business = String.Join(",",x.Select(z => z.Business), 
           StreetAddress x.Key.StreetAddress 
          }); 

편집 : 는 목록에 Business를 가져옵니다.

var result = data.GroupBy(x => new { x.People, x.StreetAddress }) 
        .Select(x => new 
          { 
           People = x.Key.People, 
           Business = x.Select(z => z.Business).ToList(), 
           StreetAddress x.Key.StreetAddress 
          }); 

여기서 데이터는 그룹화하려는 데이터 원본입니다.

+0

문자열이 아닌 목록으로 사용하려면 Rahul이 필요하십니까? – Master

+0

@ Master- 같이 목록? '비즈니스'리스트를 말하는거야? –

+0

네, 그게 미안 해요. 비즈니스 인 문자열 목록. 그래서 Business = z.Business.ToList()와 같은 것? – Master