我将OData查询传递给方法,但我需要对查询执行额外的连接以检索一些相关数据,因为我们希望在数据库的往返中获取所有这些数据。
var products = query.ApplyTo(_repository.Query, ODataQuerySettings)
.Cast<Product>()
.ToList();
// Ideally, this will be the only query that's run.
var productImages = products.GroupJoin(_imageRepository.Query, p => p.ProductId, image => image.ProductId, (product, image) => new {
Product = product,
Image = image.DefaultIfEmpty()
}).ToList();
foreach (var item in productImages) {
...
}
这有效,但是正在进行两次查询。似乎ApplyTo针对数据库执行查询,而不仅仅是为您提供可变的IQueryable。如果我从第一个查询中删除ToList()调用,则会抛出异常。
有没有办法做到这一点?