gpt4 book ai didi

linq - 优化 LINQ to SQL 查询

转载 作者:行者123 更新时间:2023-12-03 05:13:02 24 4
gpt4 key购买 nike

我有一个如下所示的查询:

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();
}

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

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

这会生成一个 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();
}
}

谢谢西罗科。

最佳答案

您可以做的其他事情是 EagerLoading。在 Linq2SQL 中,您可以使用 LoadOptions : More on LoadOptionsL2S 的一个非常奇怪的事情是,您只能在第一个查询发送到数据库之前设置 LoadOptions。

关于linq - 优化 LINQ to SQL 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50169/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com