현재이 쿼리를 재사용 할 수있는 짧은 코드로이 쿼리를 게시하려고 할 때 게시물을 확인하려고합니다."SQL에서 지원되는 번역이 없습니다"Linq 해결 방법은 무엇입니까?
// Logic to check if post is eligible for display
public bool isEligibleForDisplay(Post n)
{
var pubDate = n.PUBLISH_DATE ?? DateTime.MinValue;
var endDate = n.END_DATE ?? DateTime.MaxValue;
var correctState = (n.STATE == PostState.Publish || n.STATE == PostState.Furture);
var dateInRange = (DateTime.Now >= pubDate && DateTime.Now <= endDate);
return correctState && dateInRange;
}
내 LINQ는 다음과 같다 :
var q = from n in _db.Posts
where isEligibleForDisplay(n)
group n by n.POST_ID into g
select g.OrderByDescending(t => t.CREATE_DATE).First();
return q.Take(quantity);
내가 SQL에 LINQ를 사용하여 처음 문제 "SQL에서 지원되는 번역"로 실행, 난 그냥 궁금를 어쨌든이있는 경우 이 사건에 대한 해결책으로 사용할 수 있는데, 매번 논리를 검사하는 논리를 전체 쿼리에 포함 시키면 골칫거리가 될 수 있습니다.
나는 회신을 고대하고 있습니다. 감사!
닫기를 선택하지 마십시오. 다른 하나 (http://stackoverflow.com/questions/2115656/no-supported-translation-in-sql-linq-workaround)는 "duplicate"가 약간 나중에 게시되었습니다. –
감사합니다. 중복 된 게시물에 대해 미안합니다. – DucDigital
당면한 문제에 직각이지만, PUBLISH_DATE 세트가있는 게시물을 1 초 동안 만 게시하고 싶습니다 (설정되어있는 경우 시작일과 종료일로 모두 사용되기 때문에). –