2012-08-06 3 views
2

LINQ에서 SQL의 STDEV과 같은 함수로 직접 쿼리를 변환 할 수있는 방법이 있습니까? 예를 들어, LINQLINQ to SQL - 내장 집계 함수 (즉, STDEV) 호출

from t in table 
group t by t.something into g 
select new { 
    avg = g.Average(o => o.number) 
    stdev = g.????? 
} 

은 SQL AVG으로 바뀝니다. 그러나 LINQ 표준 편차에 대한 지원이 없습니다.

한 가지 방법은 여기를 제안했다 : Standard Deviation in LINQ

그러나,이 어설픈이며 또한 SQL STDEV 기능은 자동으로 무시하는 수 null 값을 처리하기 위해 추가 작업을 조금 필요합니다. 또한 와이어를 통해 전송되는 데이터가 줄어들고 계산이 더 빠릅니다.

이 작업을 수행하는 방법은 무엇입니까?

답변

0

아니요, LINQ를 통해 직접 수행 할 방법이 없습니다.

당신은 정말 SQL Server의 STDEV aggregate을 감싸는 CLR aggregate을 만들 수 있지만 (그것이 가능하지만) 그 과도한 작업의 톤이 될 것입니다.

그러나 표준 편차가 필요한 각 쿼리에 대해 최소한의 저항 옵션을 지정하면 작업을 수행하는 저장 프로 시저를 만든 다음 LINQ-to-SQL을 사용하여 호출합니다.

또는 LINQ-to-SQL에서 작곡을 사용하려는 경우 create a user-defined table function in SQL server and then access that in LINQ-to-SQL을 사용하고이를 사용하여 쿼리를 작성할 수 있습니다.

+0

저장 프로 시저로 끝났습니다. 감사. –