c# - Linq to Sql 强制排序依据

标签 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 中指定的内容来强制执行此操作。

最佳答案

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/

相关文章:

c# - 删除未提交的 DGV 新行

c# - 调用 Wcf 服务被拒绝?这是web配置的问题吗?

C# 创建类和派生类的实例

C# LINQ 和函数

c# - 基于Array Results的LINQ SUM数据

c# - Selenium 无法处理 IE 中的确认证书弹出窗口

c# - 在 MVVM 应用程序中使用 autofac

c# - LINQ 子记录为空

asp.net - 链接到 ASP.NET 中的网络文件夹

c# - 如何通过 IEnumerable 使用 TableQuery 进行查询?