首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >更聪明的where子句?

更聪明的where子句?
EN

Stack Overflow用户
提问于 2011-09-23 18:47:28
回答 8查看 140关注 0票数 1

我最近一直在尝试使用LINQ to SQL,我有一个简短的问题。基本前提是我有一个搜索请求,其中包含一个制造商和型号,我用来搜索包含汽车的数据库。

我的Where子句表达式如下所示:

代码语言:javascript
复制
.Where(c => c.make == search.make  && c.model == search.model)

当我的搜索同时包含品牌和型号时,这是很好的。当它只包含make(反之亦然)而不是两个搜索字段时,问题就出现了。我想要它返回所有这种制造的汽车,但它没有返回。

我假设这是因为它正在寻找make加上一个空的模型?

除了用一系列"if not null append to query“类型的步骤手动构建查询之外,有没有一种很好的方法来解决这个问题?

EN

回答 8

Stack Overflow用户

回答已采纳

发布于 2011-09-23 18:51:19

你可以这样写:

代码语言:javascript
复制
.Where(c => c.make == search.make ?? c.make && c.model == search.model ?? c.model)
票数 0
EN

Stack Overflow用户

发布于 2011-09-23 18:50:05

您是否尝试过:

代码语言:javascript
复制
.Where(c => (search.make == null || c.make == search.make)  && (search.model == null || c.model == search.model))

更新:实际上有一个很好的解决一般问题的方法,这里是:LINQ to SQL Where Clause Optional Criteria。大家的共识似乎是扩展方法是最干净的。

票数 3
EN

Stack Overflow用户

发布于 2011-09-23 18:49:35

代码语言:javascript
复制
.Where(c => (search.make == null || c.make == search.make) && 
            (search.model == null || c.model == search.model))
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7527813

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档