我正在使用 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/