带有字段名称列表的 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
我想在每个实体中对我的集合和嵌套集合的字段进行投影, 我用 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