我有一个筛选结果的查询:
public IEnumerable<FilteredViewModel> GetFilteredQuotes()
{
return _context.Context.Quotes.Select(q => new FilteredViewModel
{
Quote = q,
QuoteProductImages = q.QuoteProducts.SelectMany(qp => qp.QuoteProductImages.Where(qpi => q.User.Id == qpi.ItemOrder))
});
}
Run Code Online (Sandbox Code Playgroud)
在where子句中,我使用参数q将属性与参数qpi中的属性进行匹配.因为过滤器将在几个地方使用,我正在尝试将where子句重写为表达式树,它看起来像这样:
public IEnumerable<FilteredViewModel> GetFilteredQuotes()
{
return _context.Context.Quotes.Select(q => new FilteredViewModel
{
Quote = q,
QuoteProductImages = q.QuoteProducts.SelectMany(qp => qp.QuoteProductImages.AsQueryable().Where(ExpressionHelper.FilterQuoteProductImagesByQuote(q)))
});
}
Run Code Online (Sandbox Code Playgroud)
在此查询中,参数q用作函数的参数:
public static Expression<Func<QuoteProductImage, bool>> FilterQuoteProductImagesByQuote(Quote quote)
{
// Match the QuoteProductImage's ItemOrder to the Quote's Id
}
Run Code Online (Sandbox Code Playgroud)
我该如何实现这个功能?或者我应该使用不同的方法吗?