我有以下代码
public class OrderDetails
{
public int OrderId { get; set; }
public int CustomerId { get; set; }
}
public List<int> GetCustomerIds()
{
var orderDetails = new List<OrderDetails>
{
new OrderDetails {OrderId = 1001, CustomerId = 2001},
new OrderDetails {OrderId = 1001, CustomerId = 2002},
new OrderDetails {OrderId = 1002, CustomerId = 2003},
new OrderDetails {OrderId = 1002, CustomerId = 2002},
new OrderDetails {OrderId = 1003, CustomerId = 2003},
new OrderDetails {OrderId = 1003, CustomerId = 2002},
//return list of common customerIds.
};
}
Run Code Online (Sandbox Code Playgroud)
我想得到一份CustomerIds在所有订单中都很常见的清单.在上面的例子中,我的输出将是2002.实现这一目标的干净方法是什么?
这将完成你想要的:
var result = orders.GroupBy(x => x.CustomerId)
.Where(y => y.Count() == orderDetails.GroupBy(z => z.OrderId)
.Count())
.FirstOrDefault()
.Key;
Run Code Online (Sandbox Code Playgroud)
输出:
2002年
我们可以用英语查询目的:
CustomerIdOrderId和获取,收集有多少不同的订单Count()CustomerId)重要提示:这只会占用第一位客户,以防有多个具有相同数量的订单,但更改此选项以获取所有订单都是微不足道的.
| 归档时间: |
|
| 查看次数: |
127 次 |
| 最近记录: |