带有字段名称列表的 linq 中的动态投影

Dynamic Projection in linq with List of fieldNames

我想在每个实体中对我的集合和嵌套集合的字段进行投影, 我用 EntityFramework 6.2 我已经用动态查询来做到这一点,比如下面的代码

Students.Select("new (Name,Family,new(Category.Name) as Category)");

它成功了,但是当我想在集合上这样做时,它抛出了错误

  Students.Select("new (Name,Family,new(Courses.Name,Courses.UnitName) as Courses)");

我想要,它 returns 结果如下代码 returns

Students.Select(std=>new{
 std.Name, 
 Category=new{std.Category.Name},
 Courses=std.Courses.Select(co=>new{
  co.Name,co.UnitName
})}) ;

如果你有任何想法请与我分享

你不能用 System.Linq.Dynamic. It is possible with System.Linq.Dynamic.Core(一个更高级的库分支)来做到这一点。

相当于你用非动态方式写的查询:

var q = Students.Select("new (Name, Category.Name as Category, Courses.Select(new (Name, UnitName)) as Courses)");

您要找的只是 Courses.Select(new (field1, field2)) as SomeAlias