LINQ声明:1对多

时间:2015-05-15 20:05:00

标签: c# linq

我需要帮助将以下代码转换为LINQ语句:

    var defaultAcordConstructionType = new AcordConstructionType();

    foreach (var constructionType in ds.GetConstructionTypes())
    {
        defaultAcordConstructionType = constructionType.AcordConstructionTypes.FirstOrDefault(a => a.IsDefault.HasValue && a.IsDefault.Value);

        if (defaultAcordConstructionType != null)
        {
            break;
        }
    }

如果不清楚:

  • 我想要默认的AcordConstructionType(IsDefault = true)
  • ConstructionTypes和AcordConstructionTypes之间存在1对多的关系
  • AcordConstructionTypes中只有一行可以是默认值(IsDefault = true)

任何帮助将不胜感激。谢谢。

1 个答案:

答案 0 :(得分:3)

您可以使用SelectMany来“展平”一对多收藏品:

defaultAcordConstructionType =
    ds.GetConstructionTypes()
      .SelectMany(constructionType => constructionType.AcordConstructionTypes)
      .FirstOrDefault(a => a.IsDefault.HasValue && a.IsDefault.Value)