도움

2010-07-07 4 views
0

내가이 테이블도움

내가이 SQL 쿼리를

선택 페이지 이름을 원하는

는, pagestat에서 납입로 (*) 계산 아이디 pagenane 사용자 이름 여기서 사용자 이름 = 표제어의 '이름'그룹

나는 linq로 할 수 있습니까?

답변

2

음,이 시도 :

var query = from row in context.pageStat 
      where row.UserName == "name" 
      group row by row.PageName into g 
      select new { PageName = g.Key, Count = g.Count() }; 
+0

어떻게 함수에서이 값을 반환 할 수 있습니다? return query.ToList()와 같은 것; 하지만 이것은 익명 형식입니다. – kusanagi

+0

@kusanagi : .NET 4를 사용하는 경우 튜플을 사용할 수 있습니다. 그렇지 않으면 페이지 이름과 특성으로 계산 된 고유 한 형식을 만들 수 있습니다 ... 기본적으로 익명 형식의 명명 된 버전입니다. –

+0

'row.UserName == "name"'은 대소 문자를 구분합니다. 아마도 사용자 이름에 대해 원하는 것이 아니며 (DB 데이터 정렬에 따라) 원본 SQL 쿼리의 결과가 아닐 수도 있습니다. 'row.UserName.Equals ("name", StringComparison.OrdinalIgnoreCase)'를 사용합니다. 그것은 L2S와 L2E 모두에서 지원됩니다. –

0
var retVal = (from s in dataContext.YourTable where 

s.UserName.Equals("name") 
group s by s.PageName into k 
select new {PageName = k.Key, Count = k.Count() }).ToList(); 
+0

's'은'select' 절의 범위에 들어 가지 않습니다. 이 시점에서 개별 레코드가 아닌 * 그룹 *을 다루고 있습니다. 다행히 그룹의 키를 사용할 수 있습니다. –

+0

Jon, 고맙습니다, 지금 고쳐 주셔서 감사합니다. –