mirror of
https://github.com/dotnetcore/FreeSql.git
synced 2026-02-18 06:10:56 +08:00
- 补充 ZeroDbContext Where 查询方法;
This commit is contained in:
@@ -586,6 +586,14 @@ namespace FreeSql.Extensions.ZeroEntity
|
|||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
/// WHERE [field] IN (...)
|
||||||
|
/// </summary>
|
||||||
|
public SelectImpl WhereIn(string field, object value) => Where(field, "in", value);
|
||||||
|
/// <summary>
|
||||||
|
/// WHERE [field] NOT IN (...)
|
||||||
|
/// </summary>
|
||||||
|
public SelectImpl WhereNotIn(string field, object value) => Where(field, "!in", value);
|
||||||
|
/// <summary>
|
||||||
/// Where(new { Year = 2017, CategoryId = 198, IsPublished = true })<para></para>
|
/// Where(new { Year = 2017, CategoryId = 198, IsPublished = true })<para></para>
|
||||||
/// WHERE [Year] = 2017 AND [CategoryId] = 198 AND [IsPublished] = 1
|
/// WHERE [Year] = 2017 AND [CategoryId] = 198 AND [IsPublished] = 1
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@@ -597,9 +605,19 @@ namespace FreeSql.Extensions.ZeroEntity
|
|||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// WHERE [field] = ..
|
/// WHERE [field] = ..<para></para>
|
||||||
|
/// 更全请看重载 Where(string field, string @operator, object value)
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public SelectImpl Where(string field, object value) => WhereDynamicFilter(new DynamicFilterInfo { Field = field, Operator = DynamicFilterOperator.Eq, Value = value });
|
public SelectImpl Where(string field, object value) => WhereDynamicFilter(new DynamicFilterInfo { Field = field, Operator = DynamicFilterOperator.Eq, Value = value });
|
||||||
|
/// <summary>
|
||||||
|
/// WHERE [field] <para></para>
|
||||||
|
/// !=、>、>=、<、<=、like、!like、in、!in<para></para>
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="field"></param>
|
||||||
|
/// <param name="operator"></param>
|
||||||
|
/// <param name="value"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
/// <exception cref="Exception"></exception>
|
||||||
public SelectImpl Where(string field, string @operator, object value)
|
public SelectImpl Where(string field, string @operator, object value)
|
||||||
{
|
{
|
||||||
switch (@operator?.ToLower().Trim())
|
switch (@operator?.ToLower().Trim())
|
||||||
@@ -631,7 +649,7 @@ namespace FreeSql.Extensions.ZeroEntity
|
|||||||
case "!in":
|
case "!in":
|
||||||
case "notin":
|
case "notin":
|
||||||
case "not in":
|
case "not in":
|
||||||
return WhereDynamicFilter(new DynamicFilterInfo { Field = field, Operator = DynamicFilterOperator.Any, Value = value });
|
return WhereDynamicFilter(new DynamicFilterInfo { Field = field, Operator = DynamicFilterOperator.NotAny, Value = value });
|
||||||
}
|
}
|
||||||
throw new Exception($"未实现 {@operator}");
|
throw new Exception($"未实现 {@operator}");
|
||||||
}
|
}
|
||||||
@@ -741,7 +759,7 @@ namespace FreeSql.Extensions.ZeroEntity
|
|||||||
return query;
|
return query;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
public SelectImpl WhereExists(Func<SubQuery, SelectImpl> q)
|
SelectImpl WhereExists(Func<SubQuery, SelectImpl> q, bool notExists)
|
||||||
{
|
{
|
||||||
var query = q?.Invoke(new SubQuery { _parentQuery = this });
|
var query = q?.Invoke(new SubQuery { _parentQuery = this });
|
||||||
switch (_orm.Ado.DataType)
|
switch (_orm.Ado.DataType)
|
||||||
@@ -757,9 +775,11 @@ namespace FreeSql.Extensions.ZeroEntity
|
|||||||
query.Limit(1); //#462 ORACLE rownum <= 2 会影响索引变慢
|
query.Limit(1); //#462 ORACLE rownum <= 2 会影响索引变慢
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
_selectProvider._where.Append($" AND EXISTS({query.ToSql("1").Replace(" \r\n", " \r\n ")})");
|
_selectProvider._where.Append($" AND {(notExists ? "NOT " : "")}EXISTS({query.ToSql("1").Replace(" \r\n", " \r\n ")})");
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
public SelectImpl WhereExists(Func<SubQuery, SelectImpl> q) => WhereExists(q, false);
|
||||||
|
public SelectImpl WhereNotExists(Func<SubQuery, SelectImpl> q) => WhereExists(q, true);
|
||||||
public SelectImpl GroupByRaw(string sql)
|
public SelectImpl GroupByRaw(string sql)
|
||||||
{
|
{
|
||||||
if (string.IsNullOrWhiteSpace(sql)) return this;
|
if (string.IsNullOrWhiteSpace(sql)) return this;
|
||||||
|
|||||||
Reference in New Issue
Block a user