C# Linq到Sql强制按顺序执行
在Linq to Sql(.net 3.5)中,有没有一种方法可以指定在获取特定记录的子记录时,强制子记录列表按特定顺序返回 例如,我有一个列表,上面有一个“DisplayOrder”。当我向父记录/对象请求返回此列表的属性时,我希望Linq to Sql为我检索记录,但按“DisplayOrder”排序 是否可以在不总是写下以下内容的情况下执行此操作:C# Linq到Sql强制按顺序执行,c#,.net,linq,linq-to-sql,.net-3.5,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); 我的想法是为我的对象创建一个分部类,并
MyObject.Children.OrderBy(c => c.DisplayOrder);
我的想法是为我的对象创建一个分部类,并添加一个“OrderedChildren”属性来封装这个调用。但是我想知道,如果dbml中没有我可以指定的东西来强制执行此操作。该方法将针对特定关系过滤所有对象。这包括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;
}
}
部分类ExampleDataContext
{
部分void OnCreated()
{
DataLoadOptions dlo=新的DataLoadOptions();
dlo.AssociateWith(i=>i.Children.OrderBy(c=>c.DisplayOrder));
LoadOptions=dlo;
}
}
您需要确保在运行其他查询之前不会覆盖
LoadOptions
。询问是否有方法可以在每次加载“MyObject”的子记录时操纵dbml来执行此操作。排序设置默认的加载排序顺序。这可能不直接在dbml中,但现在应该可以解决您的问题。可能有一种方法可以确保只有在查询MyObjects
表时才会发生这种情况,但我还没有找到它。