C# 具有字段名列表的linq动态投影

C# 具有字段名列表的linq动态投影,c#,entity-framework,linq,entity-framework-6,dynamic-linq,C#,Entity Framework,Linq,Entity Framework 6,Dynamic 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

我想在我的集合和每个实体中的嵌套集合的字段上进行投影, 我使用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
})}) ;
如果你有任何想法,请与我分享

你不能这样做。这是可能的(一个更高级的库叉)

相当于您以非动态方式编写的查询:

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

您所寻找的只是
课程。选择(新建(field1,field2))作为您正在使用的众多动态Linq库之一的别名。哪一个?@xanatos我用的System.Linq.Dynamicit不起作用,它抛出错误“没有适用的聚合方法”选择“存在”@MasoudMirzaei在我的电脑上使用最新版本我再次检查,我使用了完全新的版本但不起作用,我创建了一个新的clear项目并再次测试,但也不起作用,它抛出了同样的错误我感谢你亲爱的xanatos。它可以工作,但我在你的代码中看到我必须使用system.linq.dynamic.core而不是system.linq。dynamic@MasoudMirzaei啊,是的。。。我没有注意到。。。我在重用一个使用
System.Linq.Dynamic.Core
(即
System.Linq.Dynamic
)的旧解决方案。使用“original”
System.Linq.Dynamic
时,不支持您尝试执行的操作。