2

DbExtensionsを使用して条件付きWHEREの句を作成しようとしています。OR

次のようなSQLステートメントを生成しようとしています

SELECT ID, NAME
FROM EMPLOYEE
WHERE ID = 100 OR NAME = 'TEST'

私のC#コードは

var sql = SQL.SELECT("ID, FIRSTNAME")
             .FROM("EMPLOYEE")
             .WHERE("ID = {0}", 10)
             .WHERE("NAME = {0}", "TEST");

上記の DbExtensions ライブラリを使用して OR セパレータを取得するにはどうすればよいですか?

4

3 に答える 3

1

ここで論理 OR 演算子の定義を見つけました

  public SqlBuilder _OR<T>(IEnumerable<T> items, string itemFormat, Func<T, object[]> parametersFactory) {
     return _ForEach(items, "({0})", itemFormat, " OR ", parametersFactory);
  }

そして、ここにいくつかのコード例があります

 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");
 }

(例との類推により)あなたの場合、コードは次のようになるはずです(ただし、確実にテストすることはできません):

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 })

お役に立てれば :)


ところで...この方法を試しましたか?

var sql = SQL.SELECT("ID, FIRSTNAME")
             .FROM("EMPLOYEE")
             .WHERE(string.Format("ID = {0} OR NAME = '{1}'", 10, "TEST"))
于 2013-08-17T19:16:32.393 に答える
0

次を使用できます。

.AppendClause("OR", ",", "NAME = {0}",new object[]{"TEST"});
于 2014-08-20T11:51:07.567 に答える