2010-12-24 4 views
1

열의 고유 값을 계산하려고합니다. 열 지금이열의 값 계산

Locations 
Street1 
Street2 
Street3 
Street1,Street2 
Street2, 
Street1,Street2,Street3 

계산과 같은 데이터가
Street1 같아야 포함 (3)
Street2 (4)
Street3 (2)

내가 일을하는 쉬운 방법을 생각할 수 없다
+3

데이터베이스에서 쉼표로 구분 되었습니까? 그건 인생을 쉽게 만들지 않을거야 ... –

+1

wtf? 데이터베이스가 뭐니? SQL 서버 또는 엑셀? :) – RPM1984

+0

@ RPM1984 : linq-to-sql 태그는 SQL Server를 나타냅니다. – Ani

답변

2

LINQ to SQL을 사용합니다.

쉽게 할 수있는 경우 테이블의 모든 행을 클라이언트로 가져온 다음 LINQ to Objects를 사용하여 쿼리를 수행하는 것이 좋습니다.

var query = myDataContext 
      .MyTable 
      .AsEnumerable() 
      .SelectMany(row => row.Locations.Split(',')) 
      .GroupBy(location => location) 
      .Select(group => new { Location = group.Key, Count = group.Count() }); 

당신이 문자열 대신 해당 형식의 순서를 원하는 경우와 마지막 줄 대체 : 다른 주에

.Select(group => string.Format("{0} ({1})", group.Key, group.Count()); 

을, 나는 강하게 데이터베이스를 정상화하는 것이 좋습니다 것입니다 개요. 구분 된 목록을 열에 저장하는 것은 좋지 않습니다.

1
var result = Locations 
    .SelectMany(s => s.Split(',')) 
    .GroupBy(s => s, (loc,b) => new { loc, b.ToList().Count});