日期:2014-05-20  浏览次数:20811 次

问一个linq to sql 效率问题

public static List<User> Search(SearchModel model){
    var query = 
        from u in Users;
    if(string.IsNullOrEmpty(model.Name) == false){
        query = query.Where(m => m.Name.IndexOf(model.Name) >= 0);
    }
    if(string.IsNullOrEmpty(model.Address) == false){
        query = query.Where(m => m.Address.IndexOf(model.Address) >= 0);
    }
    ......
    return query.List<User>();
}


查询这样写,dot net 是向数据库发送一次查询,还是每调用一次 Where,进行一次查询?
------最佳解决方案--------------------
Where 是延迟查询操作符
方法会在最后执行到 .ToList()这个非延迟操作符的时候,去数据库查询数据
所以只会和数据库通信一次
------其他解决方案--------------------
晕死,没写对,应该是
var query = 
    from u in Users
    select u;