Linq to Sql (.net 3.5) 中是否有一种方法可以指定当您获取特定记录的子项时,强制子项列表按特定顺序返回?
例如,我有一个包含“DisplayOrder”的列表。当我向我的父记录/对象询问返回给我此列表的属性时,我希望 Linq to Sql 为我检索记录,但按“DisplayOrder”排序。
是否可以在不总是编写如下内容的情况下做到这一点:
MyObject.Children.OrderBy(c => c.DisplayOrder);
我突然想到的一个想法是为我的对象创建一个分部类,并添加一个封装此调用的“OrderedChildren”属性。但想知道,是否没有我可以在 dbml 中指定的内容来强制执行此操作。
最佳答案
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
不会被覆盖。
关于c# - Linq to Sql 强制排序依据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1238681/