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



我想对每个实体中的集合和嵌套集合的字段进行投影,我使用EntityFramework 6.2我已经用动态查询做到了,比如bellow代码

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

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

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

我想要,它返回结果如下代码返回

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

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

使用System.Linq.Dynamic无法做到这一点。使用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

最新更新