我们办公室的一个问题是:
之间有什么区别
方法1
var team = _db.Get<ClientCreateDefaults>(c => c.ClientRef == newCase.ClientRef &&
c.WorkTypeCode == newCase.WorkTypeCode);
方法2
var team = _db.Get<ClientCreateDefaults>(c => c.ClientRef ==
newCase.ClientRef).Where(w => w.WorkTypeCode == newCase.WorkTypeCode);
方法3
var team = _db.Get<ClientCreateDefaults>().Where(w => w.WorkTypeCode ==
newCase.WorkTypeCode).Where(c => c.ClientRef == newCase.ClientRef);
给出了答案:
如果这是我们的
DataContext
:第一个,条件将全部转换为SQL,因此过滤将在db服务器上进行。
第二个只在数据库服务器上执行第一个,然后在客户端按
WorkTypeCode
进行过滤。第三个将过滤所有客户端并从db获取所有项目。
这是对的吗? linq真的会将整个数据集带到客户端吗?
答案 0 :(得分:2)
Get
是您的代码,而不是LINQ 2 SQL的代码。根据专家的解释,它返回IEnumerable
。一旦它返回,你离开LINQ 2 SQL的领域并输入LINQ to Objects。这就是为什么在客户端上完成附加过滤的原因。
这看起来像是一个通用的存储库模式。