Entity framework 4 实体框架按.Include字段选择父/子排序

Entity framework 4 实体框架按.Include字段选择父/子排序,entity-framework-4,Entity Framework 4,我有一个简单的父/子表,我想使用实体框架填充一条SQL语句。大概是这样的: public class Parent { public long ParentId { get; set; } public virtual List<Child> Children { get; set; } } public class Child { public long ChildId { get; set; } public long ParentId { ge

我有一个简单的父/子表,我想使用实体框架填充一条SQL语句。大概是这样的:

public class Parent
{
    public long ParentId { get; set; }
    public virtual List<Child> Children { get; set; }
}

public class Child
{
    public long ChildId { get; set; }
    public long ParentId { get; set; }
    public DateTime DateCreated { get; set; }
}

public Parent GetParent (long parentId)
{
    IQueryable<Parent> query =
            (from a in db.Parents.Include("Children")
             where a.ParentId == parentId
             select a);
    return query.FirstOrDefault();
}
公共类父类
{
公共长父ID{get;set;}
公共虚拟列表子项{get;set;}
}
公营儿童
{
公共长ChildId{get;set;}
公共长父ID{get;set;}
public DateTime DateCreated{get;set;}
}
公共父项GetParent(长父项ID)
{
可查询查询=
(来自db中的父母,包括(“子女”)
其中a.ParentId==ParentId
选择a);
返回query.FirstOrDefault();
}
这似乎可以在一条SQL语句中获取父级和所有子级。我现在要做的是按DateCreated字段对子列表排序,但我不知道如何进行排序。我看过关于使用ThenBy()的帖子,但没有看到如何在上面的Linq中注入。有没有更好的方法来制定Linq


-shnar

不幸的是,这不受支持。不能按Linq向实体排序包含的记录。只能订购父记录。但您仍然可以执行以下操作:

var parent = GetParent(id);
var orderedChildren = parent.Children.OrderBy(c => c.DateCreated);

啊,难怪我这么难弄明白!如果我理解正确,排序是在代码中进行的,不会对数据库进行第二次点击,对吗?是的,它在加载的对象上进行,而不会再次访问数据库。