首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >DbExtensions -如何创建带有OR条件的WHERE子句?

DbExtensions -如何创建带有OR条件的WHERE子句?
EN

Stack Overflow用户
提问于 2013-08-16 01:28:03
回答 3查看 891关注 0票数 2

我正在尝试使用DbExtensions创建带有OR条件的WHERE子句。

我正在尝试生成SQL语句,如下所示

代码语言:javascript
复制
SELECT ID, NAME
FROM EMPLOYEE
WHERE ID = 100 OR NAME = 'TEST'

我的C#代码是

代码语言:javascript
复制
var sql = SQL.SELECT("ID, FIRSTNAME")
             .FROM("EMPLOYEE")
             .WHERE("ID = {0}", 10)
             .WHERE("NAME = {0}", "TEST");

如何使用上面提到的DbExtensions库获得OR分隔符?

EN

回答 3

Stack Overflow用户

发布于 2013-08-18 03:16:32

我找到了逻辑或运算符here的定义

代码语言:javascript
复制
  public SqlBuilder _OR<T>(IEnumerable<T> items, string itemFormat, Func<T, object[]> parametersFactory) {
     return _ForEach(items, "({0})", itemFormat, " OR ", parametersFactory);
  }

和一些代码示例here

代码语言:javascript
复制
 public SqlBuilder Or() {

 int[][] parameters = { new[] { 1, 2 }, new[] { 3, 4} };

 return SQL
    .SELECT("p.ProductID, p.ProductName")
    .FROM("Products p")
    .WHERE()
    ._OR(parameters, "(p.CategoryID = {0} AND p.SupplierID = {1})", p => new object[] { p[0], p[1] })
    .ORDER_BY("p.ProductName, p.ProductID DESC");
 }

我认为(通过与示例的类比)在您的案例中,代码应该是这样的(但我不能肯定地测试它):

代码语言:javascript
复制
var params = new string[] { "TEST" };

var sql = SQL.SELECT("ID, FIRSTNAME")
             .FROM("EMPLOYEE")
             .WHERE("ID = {0}", 10)
             ._OR(params, "NAME = {0}", p => new object[] { p })

希望这能有所帮助:)

顺便说一下..。你试过这种方法吗?

代码语言:javascript
复制
var sql = SQL.SELECT("ID, FIRSTNAME")
             .FROM("EMPLOYEE")
             .WHERE(string.Format("ID = {0} OR NAME = '{1}'", 10, "TEST"))
票数 1
EN

Stack Overflow用户

发布于 2013-08-25 13:22:14

它比你想象的要简单:

代码语言:javascript
复制
var sql = SQL
   .SELECT("ID, FIRSTNAME")
   .FROM("EMPLOYEE")
   .WHERE("(ID = {0} OR NAME = {1})", 10, "TEST");
票数 0
EN

Stack Overflow用户

发布于 2014-08-20 19:51:08

可以使用:

代码语言:javascript
复制
.AppendClause("OR", ",", "NAME = {0}",new object[]{"TEST"});
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18258189

复制
相关文章

相似问题

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