LINQ 连接查询:查找订单数等于特定值的客户
以下是使用 LINQ 进行连接查询并查找订单数为特定值的示例:
假设我们有两个实体类:
public class Order
{
public int OrderId { get; set; }
public int CustomerId { get; set; }
}
public class Customer
{
public int CustomerId { get; set; }
public string Name { get; set; }
}
我们想要查询每个客户的订单数,并找到订单数等于 3 的客户。我们可以使用以下代码:
List<Customer> customers = new List<Customer>();
List<Order> orders = new List<Order>();
// 添加一些测试数据
customers.Add(new Customer { CustomerId = 1, Name = 'John' });
customers.Add(new Customer { CustomerId = 2, Name = 'Jane' });
customers.Add(new Customer { CustomerId = 3, Name = 'Bob' });
orders.Add(new Order { OrderId = 1, CustomerId = 1 });
orders.Add(new Order { OrderId = 2, CustomerId = 1 });
orders.Add(new Order { OrderId = 3, CustomerId = 2 });
orders.Add(new Order { OrderId = 4, CustomerId = 1 });
orders.Add(new Order { OrderId = 5, CustomerId = 3 });
orders.Add(new Order { OrderId = 6, CustomerId = 2 });
orders.Add(new Order { OrderId = 7, CustomerId = 1 });
var result = from c in customers
join o in orders on c.CustomerId equals o.CustomerId into g
where g.Count() == 3
select new { CustomerName = c.Name, OrderCount = g.Count() };
foreach (var item in result)
{
Console.WriteLine(item.CustomerName + ' has ' + item.OrderCount + ' orders.');
}
在这个例子中,我们首先使用 join 操作符将两个表连接起来,然后使用 into 关键字将结果分组。接下来,我们使用 where 子句过滤出订单数等于 3 的客户。最后,我们使用 select 子句选择客户姓名和订单数,并将结果存储在匿名类型中。
输出结果将是:
John has 3 orders.
原文地址: http://www.cveoy.top/t/topic/f2Rc 著作权归作者所有。请勿转载和采集!