我想在linq查詢中分離出經常使用的表達式。我正在使用實體框架4和LINQKit,但我仍然不知道如何以正確的方式進行操作。讓我舉個例子:如何在EFI(和LINQKit)中使用Linq中的外部表達式?
Article article = dataContainer.Articles.FirstOrDefault(a => a.Id == id);
IEnumerable<Comment> comments =
(from c in article.Comments
where CommentExpressions.IsApproved.Invoke(c)
select c);
public static class CommentExpressions
{
public static Expression<Func<Comment, bool>> IsApproved
{
get
{
return c => c.IsApproved;
}
}
}
當然,被批准的表達式會更復雜一些。
問題是Invoke()將不起作用,因爲我沒有從container.Comments上的LINQKit調用.asExpandable(),但我無法調用它,因爲它只是一個ICollection而不是ObjectSet。
所以我的問題是:當我想要包含外部表達式時,或者我能以某種方式在我提取的對象(條)上使用它時,是否總是必須經過數據上下文?
任何想法或最佳實踐? 非常感謝! 新
您的意思是「article.Comments」而不是您的示例代碼的第4行中的「container.Comments」? – jeroenh 2010-03-30 10:16:31
哦,是的,謝謝,我糾正了它 – letmaik 2010-03-30 10:36:18