带有 EXISTS 的实体框架子查询

问题描述 投票:0回答:1

我有一个问题。 有两个表:客户(CustomerID、Name 等)和订单(OrderID、CustomerID 等)。 我想选择至少有一个订单的客户。 我正在使用 LINQ。

context.Customers
.Where(c => c.TypeID == 5)
.Include(x => x.AdditionalParameters)
.Join(context.Orders
     .GroupBy(p => p.CustomerID)
     .Select(p => new {p.Key, Sum = p.Sum(s => s.TotalPrice)}),
x => (int)x.Id,
x => (int)x.Key,
(customer, order) => new
            {
                customer.CustomerID,
                customer.Name,
                order.Sum
            })
.AsNoTracking()
.ToListAsync(cancellationToken))
            .Select(x => new Result
            {
                CustomerID = x.CustomerID,
                CustomerName = x.Name,
                HasOrders = x.Sum > 0
            })
            .ToList();

我只想检查是否有客户的订单。我知道如何使用子查询在 SQL 中执行此操作(存在时的情况(从订单中选择 1 ....))。但是EF可以吗?

我尝试了所描述的分组和汇总解决方案,但当订单很多时,它可能会很昂贵。 我不想对数据库进行非规范化。如果可能的话,想使用子查询。

entity-framework subquery linq-to-entities
1个回答
0
投票

我对糟糕的搜索表示歉意) 答案是显而易见的。 http://andreyzavadskiy.com/2016/01/29/querying-entity-model-part-6-implementing-where-exists/

© www.soinside.com 2019 - 2024. All rights reserved.