當前即時通訊設法使我的查詢短與這樣的代碼可重用peice檢查後,如果它有資格顯示。「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);
我跑進了使用LINQ to SQL的第一時間問題「在SQL不支持翻譯」,我只是想知道是否有反正可以用作這種情況的解決方法,如果每次將大量這些檢查邏輯包含到查詢中,這可能會很麻煩。
我很期待回覆。謝謝!
請不要投票結束這件事。另一個(http://stackoverflow.com/questions/2115656/no-supported-translation-in-sql-linq-workaround)是稍後發佈的「重複」。 – 2010-01-22 07:19:11
謝謝。對不起,重複的帖子 – DucDigital 2010-01-22 07:32:28
正交於手頭的問題,但是您確定要設置PUBLISH_DATE的帖子只存在一秒(因爲如果已設置,它將用作開始日期和結束日期)? – 2010-01-22 08:16:35