使用List展平字典并返回自定义IEnumerable

时间:2014-11-18 07:22:11

标签: c# .net linq

我有以下数据结构:

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}},但我应该修改哪些内容以确保我可以获得具有正确结果的集合。

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();