linq中连表查询 查找count为一个值
以下是使用LINQ进行连接查询并查找count为特定值的示例:
假设我们有两个实体类:
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/hw0p 著作权归作者所有。请勿转载和采集!