gpt4 book ai didi

c# - 分组然后展平项目

转载 作者:太空狗 更新时间:2023-10-29 17:30:37 26 4
gpt4 key购买 nike

我有一个具有以下属性的对象列表:

int TownId, int CompanyId, int ProductId, int[] Prices

我想把它变成一个 TownCompany 对象的列表;每个项目都具有以下属性:

int TownId, int CompanyId, int[] Products, int[] Prices

我能做到

flatList.GroupBy(l => new { l.TownId, l.CompanyId })

获取一组列表,其中包含每个城镇/公司对的所有产品和价格。现在,对于此查找中的每个键,我想展平/合并所有值。似乎我应该能够使用 SelectMany,但我总是对向它提供什么投影感到困惑...

如何将这个组列表转换为每个键的扁平列表列表?我希望我说得有道理。

例子:

如果我的原始列表是这样的:

new[] {
new Item { TownId = 1, CompanyId = 10, ProductId = 100, Prices = new [] { 1, 2 } },
new Item { TownId = 1, CompanyId = 10, ProductId = 101, Prices = new [] { 3 } },
};

我想要一个如下所示的列表:

{
{ TownId: 1, CompanyId: 10, Products: [100, 101], Prices: [1, 2, 3] }
}

最佳答案

您只需要SelectMany Prices;对于 ProductId,这是一个简单的Select:

flatList
.GroupBy(l => new { l.TownId, l.CompanyId })
.Select(g => new {
g.Key.TownId
, g.Key.CompanyId
, ProductIds = g.Select(o => o.ProductId).ToArray()
, Prices = g.SelectMany(o => o.Prices).ToArray()
});

关于c# - 分组然后展平项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13307569/

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