我有一個查詢,看起來像這樣:優化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();
}
我需要打印的訂單信息和誰創造了它的用戶:
foreach (var o in FetchLatestOrders(0, 10))
{
Console.WriteLine("{0} {1}", o.Code, o.Customer.Name);
}
這將產生一個SQL查詢爲每個訂單帶來訂單和一個查詢以帶來客戶。是否可以優化查詢,以便將訂單和客戶置於一個SQL查詢中?
感謝
UDPATE:通過希洛可風式的建議,我改變了這樣的查詢和它的作品。只生成一個選擇查詢:
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();
}
}
謝謝西羅科。
哇,這太棒了。我實現了這一點,查詢時間從25秒減少到1.5 ..非常感謝。 – BastanteCaro 2011-08-22 12:42:26