Vb.net Oracle、Linq和排序子级

Vb.net Oracle、Linq和排序子级,vb.net,linq,entity-framework-4,Vb.net,Linq,Entity Framework 4,我正在使用MVC3和EF4.1(Oracle DB)。让我们假设我有: Public Class Parent Public Property Id As Integer Public Property Name As String Public Overridable Property Children As List(Of Child) End Class Public Class Child Public Property Id As Integer

我正在使用MVC3和EF4.1(Oracle DB)。让我们假设我有:

Public Class Parent
    Public Property Id As Integer
    Public Property Name As String
    Public Overridable Property Children As List(Of Child)
End Class

Public Class Child
    Public Property Id As Integer
    Public Property Name As String
    Public Property Age As Integer
End Class
我想从数据库中检索所有父项,并且对于每个父项,我可以访问其子项

我想做以下工作:

Dim firstParent = (From q In db.Parents Select q).First()

For Each child In firstParent.Children
    'Do something
Next
问题是,我想把这些孩子从最小的到最大的一一列举出来。没有客户端排序是否可能?如果是,那么我如何才能做到这一点?我知道如何用SQL查询实现我想要的,但我不能用LINQ实现它

编辑:
因为在我的情况下,这似乎没有解决方案,而且每次请求数据时都不能进行排序,所以当我将数据插入数据库时,也许我可以做些什么?在调用db.Save()时,我没有控制order EF将项目保存到数据库中的顺序,但可能有一些语法可以用于根据某些属性要求排序。有什么想法吗?

从另一边接近它怎么样

var children = db.Children.Where(c => c.ParentId == "foo").OrderBy(c => c.Age);

希望您可以将其转换为vb.net

如果您使用的是NHibernate,则可以在加载子集合时定义(使用“order by”属性)。由于您使用的是实体框架,因此您可以创建一个特定的存储库方法(例如
ParentRepository.GetOrderedChildren(Parent myParent)
),并使用LINQ连接加载您的子项(这是lambda语法):

请注意,您的代码可能会受到影响,因为您正在加载所有家长,然后为每个家长加载子代。我建议你做点什么。

我本来是个C#程序员,所以这不是问题。问题是,在实际情况下,我有4个级别,我希望它们在每个级别都能正确排序。。。
context.Parents
    .Join(context.Children,
        p => p,
        c => c.Parent,
        (p, c) => new { Parent = p, Child = c }
    )
    .Where(o => o.Parent == myParent)
    .OrderBy(o => o.Child.myOrderField)
    .Select(o => o.Child)
    .ToList();