需要Linq表达式从对象字典(包含列表)创建字符串列表

时间:2017-03-22 14:54:17

标签: c# linq

需要linq表达式从所有字典条目的值的Iternary.Name获取不同的Iternary.Name列表。

对象格式如下:

public class IternaryInfo
{
   public string Name  { get; set; }   
   public Iternary[] IternaryList { get; set; }   
}

public class Iternary
{
   public string Name  { get; set; }   
}

Dictionary<String, IternaryInfo> dictionary = new Dictionary<String, IternaryInfo>();

这可能是一个表达式还是必须循环。

尝试了 - dictionary.Select(x=>x.Value.IternaryList).ToList(),但不确定如何从Iternary中选择-Name字段。

1 个答案:

答案 0 :(得分:6)

你需要:

  • 使用SelectMany然后
  • 展平列表
  • 使用SelectIternary投射到Name,然后
  • 使用Distinct仅获取不同的值

    var result = dictionary.Values
                       .SelectMany(v => v.IternaryList)
                       .Select(i => i.Name)
                       .Distinct().ToList();