Есть ли способ в 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
никогда не перезаписываются до запуска других запросов.
MyObjects
, но я пока не нашел ее.