LINQ to SQL或其他一些选项

时间:2015-04-06 21:12:28

标签: c# sql-server linq

我有一些LINQ to SQL类,它们是数据库中的单个表(即,我将表从SQL Server对象浏览器拖放到DBML设计布局窗口)。当我填充我的视图模型可观察集合时,我正在考虑过滤表格:(注释掉,但你明白了):

class ObservableDocuments : ViewableCollection<Document>
{
    public ObservableDocuments(DataClasses1DataContext dataDc)
    {
        foreach (Document doc in dataDc.Documents)//.Where(x => x.JobID == 1))
        {
            this.Add(doc);
        }
    }
}

我想知道这是否是处理此过滤的最佳方式。在实际查询数据库之前,LINQ to SQL是否等到此调用,或者整个表是否仍然被引入DataContext.Documents表,然后我只将我想要的那些添加到ObservableCollection中?如果是后者,那么在LINQ to SQL中有更好的方法来过滤结果,还是应该离开这个框架呢?

1 个答案:

答案 0 :(得分:2)

使用LINQ to SQL意味着在IQueryable<T>上应用LINQ运算符将添加到SQL语句中,而不是使用IEnumerable<T>,它将运算符应用于完全检索的结果。

因此,在应用Where运算符时,在您的情况下,使用组合IQueryable<T>就足够了。如果您遍历结果或调用ToList(),则会填充结果。

更多信息:Using IQueryable with Linq