合并两个集合并更改相同对象的属性

本文关键字:合并 对象 属性 集合 两个 | 更新日期: 2023-09-27 17:54:30

我有两个客户集合:

  1. 所有客户名单
  2. 相关客户名单

所有客户列表包含所有客户。相关客户列表包含"所有客户列表"中的一些客户

我想返回一个名为mergedCustomers的第三个集合,在那里我可以执行一个函数/逻辑来创建一个新的类"MergeCustomer",其中每个集合元素的Id是相等的,对于那些我在新的MergeCustomer上设置了一个属性IsSelected = true。

我的第三个集合当然必须返回所有客户,我只是想改变IsSelected属性,其中所有客户都与相关的客户集合匹配。

linq函数是什么?

合并两个集合并更改相同对象的属性

最简单的方法:

var mergedCustomers=customers.Select(c=>new MergedCustomer{
  Id=c.Id,
  IsSelected=relatedCustomers.Select(rc=>rc.Id).Contains(c.Id)
});

连接方式:

var mergedCustomers=customers.Join(relatedCustomers,c=>c.Id,rc=>rc.Id,
  (c,g)=> g.Select(rc=>new MergedCustomer { Id=rc.Id,IsSelected=true})
    .DefaultIfEmpty(new MergedCustomer {Id=c.Id, IsSelected=false}));

另一种方法(我认为这应该可以):

var mergedCustomers=customers.Join(relatedCustomers,c=>c.Id,rc=>rc.Id,
  (c,g)=> new MergedCustomer { Id=rc.Id,IsSelected=g.Any()});