延迟LINQ to SQL选择查询执行

Max*_*sky 0 c# linq asp.net asp.net-mvc linq-to-sql

我正在构建一个使用LINQ to SQL的ASP.NET MVC站点.

在我的搜索方法中有一些必需参数和一些可选参数,我想在测试这些可选参数的存在时构建一个LINQ查询.


这就是我目前的想法:

using(var db = new DBDataContext())
        {
            IQueryable<Listing> query = null;

            //Handle required parameter
            query = db.Listings.Where(l => l.Lat >= form.bounds.extent1.latitude && l.Lat <= form.bounds.extent2.latitude);

            //Handle optional parameter
            if (numStars != null)
                query = query.Where(l => l.Stars == (int)numStars);

            //Other parameters...

            //Execute query (does this happen here?)
            var result = query.ToList();

            //Process query...
Run Code Online (Sandbox Code Playgroud)

这个实现会"绑定" where子句然后执行捆绑查询吗?如果没有,我该如何实现此功能?

另外,还有什么我可以改进的吗?

提前致谢.

Fem*_*ref 7

是的,查询只会在ToList()调用后执行一次.如果您遵循此模式并使用匿名类型,请注意OrderBy()返回IOrderedQueryable而不是IQueryable.

请注意,您可以只是迭代IQueryable,您不必调用ToList访问数据.