Linq to Sql Force Order By

时间:2009-08-06 12:53:53

标签: c# .net linq linq-to-sql .net-3.5

在Linq to Sql(.net 3.5)中是否有一种方法可以指定当您获取特定记录的子项时,强制子项列表按特定顺序返回?

例如,我有一个包含“DisplayOrder”的列表。当我问我的父记录/对象的属性是否返回给我这个列表时,我希望Linq to Sql为我检索记录,但是由“DisplayOrder”命令。

是否可以在不写总是这样的情况下这样做:

MyObject.Children.OrderBy(c => c.DisplayOrder);

我的头脑中的一个想法是为我的对象创建一个部分类,并添加一个封装此调用的“OrderedChildren”属性。但是想知道,如果没有我可以在dbml中指定的东西来强迫它。

1 个答案:

答案 0 :(得分:4)

DataLoadOptions.AssociateWith()方法将过滤特定关系的所有对象。其中包括Where()OrderBy()ThenBy()OrderByDescending()ThenByDescending()Take()

您可以在DataContext中的部分方法中使用此功能,如下所示:

partial class ExampleDataContext
{
    partial void OnCreated()
    {
        DataLoadOptions dlo = new DataLoadOptions();
        dlo.AssociateWith<MyObject>(i => i.Children.OrderBy(c => c.DisplayOrder));
        LoadOptions = dlo;
    }
}

您需要确保在运行其他查询之前永远不会覆盖LoadOptions