英译中:
执行此查询时,我收到以下错误:InvalidOperationException:属性表达式'c => {from Order o in c.Order where ([o].OrderState == 0) select [o]}'无效。该表达式应表示属性访问:“t => t.MyProperty”。有关包括相关数据的更多信息,请参见
现在查询不会产生错误,但结果并不是我想要的。由于存在1-n关系,这个查询会将客户多次返回到结果中,因此我无法获得前10个客户。
有没有人有更好的查询来获得我想要的结果?
我想使用EF Core执行1个查询,其中我需要对子实体进行过滤并应用分页。请参阅下面的(示例)数据模型:
我想检索所有数据(客户、订单、订单明细和产品)。我必须在Order.OrderState上应用过滤器,而且我只想要前10条记录(客户)
这是我尝试的LINQ查询:
var customers = await _ctx.Customer
.Include(c => c.Order.Where(o => o.OrderState == 0))
.ThenInclude(o => o.OrderDetail)
.ThenInclude(d => d.Product)
.Skip(0).Take(10)
.ToListAsync();
执行此查询时,我收到以下错误:InvalidOperationException:属性表达式'c => {from Order o in c.Order where ([o].OrderState == 0) select [o]}'无效。该表达式应表示属性访问:“t => t.MyProperty”。有关包括相关数据的更多信息,请参见
因此,我尝试了另一个查询:
var qry = from c in _ctx.Customer
join o in _ctx.Order on c.Id equals o.CustomerId
join d in _ctx.OrderDetail on o.Id equals d.OrderId
join p in _ctx.Product on d.ProductId equals p.Id
where o.OrderState == 0
select new { Customer = c, Order = o, OrderDetail = d, Product = p };
var customers = await qry.Skip(0).Take(10).ToListAsync();
现在查询不会产生错误,但结果并不是我想要的。由于存在1-n关系,这个查询会将客户多次返回到结果中,因此我无法获得前10个客户。
有没有人有更好的查询来获得我想要的结果?