优化LINQ to SQL查询

Gre*_*rts 7 linq optimization linq-to-sql

我有一个看起来像这样的查询:

public IList<Post> FetchLatestOrders(int pageIndex, int recordCount)
{
    DatabaseDataContext db = new DatabaseDataContext();
    return (from o in db.Orders
            orderby o.CreatedDate descending
            select o)
            .Skip(pageIndex * recordCount)
            .Take(recordCount)
            .ToList();
}
Run Code Online (Sandbox Code Playgroud)

我需要打印订单信息和创建订单的用户:

foreach (var o in FetchLatestOrders(0, 10))
{
    Console.WriteLine("{0} {1}", o.Code, o.Customer.Name);
}
Run Code Online (Sandbox Code Playgroud)

这将生成一个SQL查询,以便为每个订单带来订单和一个查询以带来客户.是否可以优化查询,以便将订单及其客户带入一个SQL查询?

谢谢

UDPATE:通过sirrocco的建议,我改变了这样的查询,它的工作原理.只生成一个选择查询:

public IList<Post> FetchLatestOrders(int pageIndex, int recordCount)
{
    var options = new DataLoadOptions();
    options.LoadWith<Post>(o => o.Customer);
    using (var db = new DatabaseDataContext())
    {
        db.LoadOptions = options;
        return (from o in db.Orders
                orderby o.CreatedDate descending
                select o)
                .Skip(pageIndex * recordCount)
                .Take(recordCount)
                .ToList();
    }
}
Run Code Online (Sandbox Code Playgroud)

谢谢sirrocco.

sir*_*cco 4

您还可以做的其他事情是 EagerLoading。在 Linq2SQL 中,您可以使用 LoadOptions :有关 LoadOptions 的更多 信息 关于 L2S 的一个非常奇怪的事情是,您只能在第一个查询发送到数据库之前设置 LoadOptions。