当前即时通讯设法使我的查询短与这样的代码可重用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