gpt4 book ai didi

c# - 在对象列表中查找公共(public)元素

转载 作者:太空狗 更新时间:2023-10-30 00:40:59 24 4
gpt4 key购买 nike

我有以下代码

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.
};
}

我想获取所有订单中通用的 CustomerIds 列表。在上面的示例中,我的输出将是 2002。实现这一目标的简洁方法是什么?

最佳答案

这将完成您想要的:

var result = orders.GroupBy(x => x.CustomerId)
.Where(y => y.Count() == orderDetails.GroupBy(z => z.OrderId)
.Count())
.FirstOrDefault()
.Key;

输出:

2002

我们可以从英文查询中读出目的:

  • CustomerId 上对您的收藏进行分组>
  • 通过对 OrderId 进行分组并获取 Count() 来收集有多少不同的订单
  • 将集合过滤为那些出现频率与订单数量相同的客户
  • 选择第一个
  • 打印 key (即 CustomerId)

重要说明:如果有多个相同数量的订单,这只会吸引第一个客户,但更改此设置以吸引所有客户是微不足道的。

关于c# - 在对象列表中查找公共(public)元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23668064/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com