在select子句中选择嵌套集合的属性

时间:2014-01-30 22:10:13

标签: c# linq dynamic-linq

我在github's repository上使用System.Linq.Dynamic版本。

我对NON System.Linq.Dynamic解决方案不感兴趣。

我正在尝试对嵌套集合的属性执行select。让我们想象一下我们有以下情况:

public class Region
{
  public int Id { get; set; }
  public List<Town> Towns { get; set; }
}
public class Town
{
  public int Id { get; set; }
  public string Name { get; set; }
}

是否有可能'选择'地区的ID并且它是城镇的名字? 有点像:

someListofRegions.Select("new(Id, Towns.Name)")

其中"new(Id, Towns.Name)"是动态Linq表达式。

当然上面的例子失败了。

1 个答案:

答案 0 :(得分:-1)

您无法对嵌套集合的属性执行选择,因为这需要展平生成的集合。

通常你会使用SelectMany()来进行这种展平,但由于你想使用System.Linq.Dynamic,我不相信这个库有动态的SelectMany(),这可能是不可能的。你可以编写自己的SelectMany(),尽管使用的表达式树不应该太难。

或者您可能会发现GroupBy更适合您的需求,我个人无法看到想要收集区域ID和城镇名称的好处 - 会有大量重复的区域ID。