2011-07-28 3 views
1

오늘 열어 본 날짜의 평균 일수를 계산하는 코드가 있습니다.평균 linq에 대한 속성을 NHibernate 매핑 된 객체로 확인할 수 없습니다.

오류 메시지 : 내가 다음과 같이 내가 오류가 Linq에 람다 표현식을 사용하여 식을 실행하면 속성을 확인할 수 없습니다 : DateClosed.DateCreated을의 : TestProject.LegalWork

곳 코드입니다 :

var result = Repository.All 
      .Where(x => x.DateClosed != null) 
      .Average(x => ((DateTime)x.DateClosed - x.DateCreated).TotalDays); 

어떻게하면 루프 만 사용하고 상태 만 필터하면 eveything이 제대로 작동합니다.

int number= 0; 
decimal totalDays = 0; 
foreach (LegalWork legalWork in Repository.All.Where(x => x.DateClosed != null)) 
{ 
    totalDays += (decimal)((DateTime)legalWork.DateClosed - legalWork.DateCreated).TotalDays; 
    number++; 
} 
return (totalDays == 0 || numberOfLegalWork ==0) ? 0 : Convert.ToDecimal(totalDays/numberOfLegalWork); 

Linq 및 Lambda 버전의 문제점은 무엇입니까? 그것을 당신이 linq2nhibernate의 일부가 아닌 날짜 시간의 특정 함수를 호출해야는 .NET 프레임 워크의 일부와 있기 때문에,

x.DateClosed - x.DateCreated 

또는 linq2nhibernate에서 givenDate.TotalDays :

답변

1

나는 당신이 호출 할 수 없습니다 확신 linq2nhibernate 구현하지만, 현재 오류 메시지가 다른 일을 말한다하지 않고, 현재 UR 문제를 해결하기 위해 u를 수행 할 수 있습니다

var result = Repository.All.Where(x => x.DateClosed != null).ToList() 
    .Average(x => ((DateTime)x.DateClosed - x.DateCreated).TotalDays); 

을 위의 코드에 문제가있을 경우, 삽입하십시오 UR 클래스 정의, 하지만 확인 ' 최고의 솔루션이 아니라 스토어드 프로 시저를 작성하고 호출하는 것이 좋습니다.

+0

결과에 평균을 실행하기 전에 결과를 목록으로 변환하지 않을 것입니다. – cpoDesign