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

标签 c# linq dynamic-linq

我正在使用 System.Linq.Dynamic,版本在 github's repository .

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

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

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 表达式。

当然上面的例子失败了。

最佳答案

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

通常您会使用 SelectMany() 来进行这种扁平化,但由于您想使用 System.Linq.Dynamic 并且我不认为该库具有动态 SelectMany() 这可能是不可能的。您可以使用表达式树编写自己的 SelectMany(),这应该不会太难。

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

关于c# - 在 select 子句中选择嵌套集合的属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21468470/

相关文章:

c# - 如何加速计算多个项目的所有可能分布的算法?

c# - 地理空间搜索 - Entity Framework Core/PostgreSQL

c# - 动态 linq : Is there a way to access object data by index?

linq - 如何对动态选择的列执行不同操作?

c# - 参数类型 'void' 不可分配给参数类型 'System.Action'

c# 加密,得到 .der 和 .pem 文件作为输入

c# - SQL 搜索多个列的多个值列表

c# - 使用 LINQ 避免 ObjectDisposedException (LINQ2SQL)

c# - 不支持异常 : LINQ to Entities does not recognize the method

c# - 动态 linq 构建表达式