C# 在linq查询中,如何对包含的表进行排序?(内部代码)
假设您有这样一个查询:C# 在linq查询中,如何对包含的表进行排序?(内部代码),c#,entity-framework,linq,C#,Entity Framework,Linq,假设您有这样一个查询: var query = context.Cars.Include("Owner").Include("Parts").Where(c=>c.id == strID); 它从汽车中获取一行,也从车主和零件表中获取行。如果我想按Parts.PartName列订购Parts表,该怎么办 我使用的是EF4。如果您想使用“急切加载”来执行此操作,那么除了将查询投影到相关实体之外,您别无选择: //In Linq to Entities you can project
var query = context.Cars.Include("Owner").Include("Parts").Where(c=>c.id == strID);
它从汽车
中获取一行,也从车主
和零件
表中获取行。如果我想按Parts.PartName
列订购Parts
表,该怎么办
我使用的是EF4。如果您想使用“急切加载”来执行此操作,那么除了将查询投影到相关实体之外,您别无选择:
//In Linq to Entities you can project using an anonymous type or a custom class(also known as a DTO)
var cars= context.Cars
.Include("Owner")
.Include("Parts")
.Where(c=>c.id == strID)
.Select(c=>new {//Change this projection at your convinience
Car=c,
Parts= c.Parts.OrderBy(p=>p.PartName),
Owner=c.Owner
});
如果您使用的是EF的主要版本(至少4.1),那么您可以使用如下所示:
var car= context.Cars.Include("Owner").FirstOrDefault(c=>c.id == strID);
context.Entry(car)
.Collection(b => b.Parts)
.Query()
.OrderBy(p => p.PartName)
.Load();
如果要使用“快速加载”来执行此操作,则除了投影查询之外,您没有其他选择可以将订单依据应用于相关实体:
//In Linq to Entities you can project using an anonymous type or a custom class(also known as a DTO)
var cars= context.Cars
.Include("Owner")
.Include("Parts")
.Where(c=>c.id == strID)
.Select(c=>new {//Change this projection at your convinience
Car=c,
Parts= c.Parts.OrderBy(p=>p.PartName),
Owner=c.Owner
});
如果您使用的是EF的主要版本(至少4.1),那么您可以使用如下所示:
var car= context.Cars.Include("Owner").FirstOrDefault(c=>c.id == strID);
context.Entry(car)
.Collection(b => b.Parts)
.Query()
.OrderBy(p => p.PartName)
.Load();
嗯,智能感知似乎不喜欢第二行(context.Entry…)“不包含‘Entry’的定义,并且没有扩展方法‘Entry’。您是否添加了
System.Data.Entity
namespace?请检查此引用:哦,就是这样,让我看看是否可以重新调整我的答案,因为它仅在4.1版本之后才起作用。”。查看另一行了解更多信息嗯,intellisense似乎不喜欢第二行(context.Entry…)“不包含‘Entry’的定义,并且没有扩展方法‘Entry’。您是否添加了System.Data.Entity
namespace?请检查此引用:哦,就是这样,让我看看是否可以重新调整我的答案,因为它仅在4.1版本之后才起作用。”。更多信息,请查看此其他