2012-01-19 2 views
-6

SQL 쿼리 : C#에서주어진 SQL 쿼리에 대한 LINQ 문은 무엇입니까?

string sql_query = SELECT HOST, PAIS, SUM_HITS, SUM_VISITAS, SUM_LARGURA_BANDA 
FROM(SELECT HOST, PAIS, SUM(HITS) AS 'SUM_HITS', SUM(VISITAS) AS 'SUM_VISITAS', SUM(LARGURA_BANDA) AS 'SUM_LARGURA_BANDA' 
FROM MAIORES_HOST 
WHERE DATE(data_file_log) BETWEEN '2007-07-01' AND '2007-09-06' AND ENTIDADE='Conjunto de Logs' GROUP BY HOST) SUB_QUERY ORDER BY SUM_VISITAS DESC LIMIT 51; 

, 내가 가진 :

List<Maior_Hosts> maiores_hosts = new List<Maior_Hosts>(); 
/*......With elements.....*/ 

LINQ 문은 무엇입니까?

+0

그리고 필수 응답 : 무엇을 시도 했습니까? –

답변

0
List<Maior_Hosts> maiores_hosts = new List<Maior_Hosts>(); 

maiores_hosts 
    .Where(
     h => 
     h.data_file_log >= new DateTime(2007, 07, 01) && 
     h.data_file_log <= new DateTime(2007, 09, 06) && 
     h.ENTIDADE == "Conjunto de Logs") 
    .GroupBy(h => h.HOST) 
    .Select(gh => new 
         { 
          HOST = gh.Key, 
          PAIS = gh.First().PAIS, 
          SUM_HITS = gh.Sum(h => h.HITS), 
          SUM_VISITAS = gh.Sum(h => h.VISITAS), 
          SUM_LARGURA_BANDA = gh.Sum(h => h.LARGURA_BANDA) 
         }) 
    .OrderByDescending(r => r.SUM_VISITAS) 
    .Take(51); 

이 열이 GROUP BY에 의해 agregated되지는 않지만 당신이 하위 쿼리에서 PAIS를 선택할 때 원래의 SQL에 오류가있을 것 같습니다 있습니다. 위의 LINQ에서 우리는 호스트 그룹의 첫 번째 항목 인 PAIS 값을 가져옵니다.

+0

많은 감사 .... 어떻게 목록에 동일한 유형을 저장할 수 있습니다 .... 예 : list sample = maiores_host.where (...). toList(); – Eriksson

+0

"Pais"-> Portuguese, English -> 국가는 문자열입니다. Maiores_Hosts의 구성원입니다 ... – Eriksson

+0

Maiores_Hosts의 목록에 결과를 저장할 수 없습니다. 왜냐하면 우리는 HOST 속성을 기반으로 이러한 개체를 그룹화하고 있기 때문에 익명 유형으로 설정하여 각 그룹에서 방문 통계를 가져옵니다. –