我有以下数据结构:
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
集合,但无法使用SelectMany
循环获取正确的答案Linq 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>
转换为{{1}},但我应该修改哪些内容以确保我可以获得具有正确结果的集合。
答案 0 :(得分:2)
我相信你的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();