我最近一直在尝试使用LINQ to SQL,我有一个简短的问题。基本前提是我有一个搜索请求,其中包含一个制造商和型号,我用来搜索包含汽车的数据库。
我的Where子句表达式如下所示:
.Where(c => c.make == search.make && c.model == search.model)当我的搜索同时包含品牌和型号时,这是很好的。当它只包含make(反之亦然)而不是两个搜索字段时,问题就出现了。我想要它返回所有这种制造的汽车,但它没有返回。
我假设这是因为它正在寻找make加上一个空的模型?
除了用一系列"if not null append to query“类型的步骤手动构建查询之外,有没有一种很好的方法来解决这个问题?
发布于 2011-09-23 18:51:19
你可以这样写:
.Where(c => c.make == search.make ?? c.make && c.model == search.model ?? c.model)发布于 2011-09-23 18:50:05
您是否尝试过:
.Where(c => (search.make == null || c.make == search.make) && (search.model == null || c.model == search.model))更新:实际上有一个很好的解决一般问题的方法,这里是:LINQ to SQL Where Clause Optional Criteria。大家的共识似乎是扩展方法是最干净的。
发布于 2011-09-23 18:49:35
.Where(c => (search.make == null || c.make == search.make) &&
(search.model == null || c.model == search.model))https://stackoverflow.com/questions/7527813
复制相似问题