2010-03-03 56 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添加到您的类(帐户),初始化它在构造函数中,所以你函数可以使用它而不必将其作为参数传递