所以我有这个类结构:
public class ObjectCode
{
public string Code { get; set; }
}
class Configuration
{
public int Id { get; set; }
public string Name { get; set; }
public IEnumerable<ObjectCode> Objects { get; set; }
}
我收到来自多个提供商的配置
列表。我的问题是,我不知道如何按 Id 对这些对象进行分组,并将来自所有 Configuration
对象的不同 ObjectCode
对象放入结果实体中。
最佳答案
使用SelectMany
在 GroupBy
中的每个组内:
var res = congigs
.GroupBy(c => new {c.Id, c.Name})
.Select(g =>
new Configuration {
Id = g.Key.Id
, Name = g.Key.Name
, Objects = g
.SelectMany(c => c.Objects)
.GroupBy(c => c.Code)
.Select(gg => gg.First())
}
).ToList();
上面假设具有相同 Id
的 Config
对象也具有相同的 Name
。
关于c# - Linq:对对象进行分组并从其子元素中删除重复元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42096423/