我正在尝试使用DbExtensions创建带有OR条件的WHERE子句。
我正在尝试生成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分隔符?
发布于 2013-08-18 03:16:32
我找到了逻辑或运算符here的定义
public SqlBuilder _OR<T>(IEnumerable<T> items, string itemFormat, Func<T, object[]> parametersFactory) {
return _ForEach(items, "({0})", itemFormat, " OR ", parametersFactory);
}和一些代码示例here
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-25 13:22:14
它比你想象的要简单:
var sql = SQL
.SELECT("ID, FIRSTNAME")
.FROM("EMPLOYEE")
.WHERE("(ID = {0} OR NAME = {1})", 10, "TEST");发布于 2014-08-20 19:51:08
可以使用:
.AppendClause("OR", ",", "NAME = {0}",new object[]{"TEST"});https://stackoverflow.com/questions/18258189
复制相似问题