使用列表平展字典并返回自定义 IEnumerable
本文关键字:返回 自定义 IEnumerable 字典 列表 | 更新日期: 2023-09-27 18:30:58
我有以下数据结构:
Dictionary<int, List<Home>> localDictionary;
Dictionary key here is the CityId of int type
public class Home
{
public int Id;
public string Address;
public string Color;
}
//Following is the Output entity:
public class HomeOutput
{
public int CityId;
public int Id;
public string Address;
public string Color;
}
HomeOutput
类型集合形式的最终结果将需要扁平化结构,因为对于每个城市,它都需要迭代主页列表并填充HomeOutput
对象
我可以使用 foreach
循环轻松做到这一点,方法是首先迭代键然后List<Home>
并将所有详细信息添加到HomeOutput
集合中,但无法使用 Linq SelectMany
获得正确答案,以下是我尝试过的:
List<HomeOutput> homeOutputList =
localDictionary.SelectMany(
x => x.Value.SelectMany<Home, HomeOutput>(
y => new HomeOutput()
{
CityId = x.Key,
Id = y.Id,
Address = y.Address,
Color = y.Color
}))
.ToList();
错误是我正在尝试将HomeOutput
转换为IEnumerable<HomeOutput>
,但是我应该修改什么以确保我可以获得具有正确结果的集合。
我相信你的LINQ
可能会稍微偏离。这应该有效。
List<HomeOutput> homeOutputList =
localDictionary.SelectMany(
x => x.Value.Select(
y => new HomeOutput()
{
CityId = x.Key,
Id = y.Id,
Address = y.Address,
Color = y.Color
}))
.ToList();