2010-03-03 55 views
0

考慮這兩種LINQ2SQL數據檢索方法。第一個創建一個「正確的」SQL語句,用於過濾數據,但需要將數據上下文傳遞到方法中。儘可能避免在內存過濾中使用

第二種語法更好,但加載該帳戶項目的整個列表,然後進行內存過濾。

有什麼辦法可以保留第二種方法的語法,但是具有第一種方法的性能優勢?

public partial class Account 
{ 
    public IQueryable<Project> GetProjectsByYear(LinqDataContext context, int year) 
    { 
     return context.Projects.Where(p => p.AccountID==this.AccountID && p.Year==year).OrderBy(p => p.ProjectNo) 
    } 

    public IQueryable<Project> GetProjectsByYear(int year) 
    { 
     return this.Projects.Where(p => p.Year==year).OrderBy(p => p.ProjectNo).AsQueryable() 
    } 
} 

回答

0

我不是EXPER所以這可能不是最好的方式,但是,

你可以在LinqDataContext添加到您的類(帳戶),初始化它在構造函數中,所以你函數可以使用它而不必將其作爲參數傳遞