mirror of
https://gitee.com/dotnetchina/SqlSugar.git
synced 2025-04-24 18:04:52 +08:00
Rich query
This commit is contained in:
parent
8484b4202d
commit
504b24be3d
@ -284,6 +284,12 @@ namespace OrmTest.Demo
|
|||||||
var getUnionAllList2 = db.UnionAll(db.Queryable<Student>(), db.Queryable<Student>()).ToList();
|
var getUnionAllList2 = db.UnionAll(db.Queryable<Student>(), db.Queryable<Student>()).ToList();
|
||||||
|
|
||||||
var test1 = db.Queryable<Student, School>((st, sc) => st.SchoolId == sc.Id).Where(st=>st.CreateTime>SqlFunc.GetDate()).Select((st, sc) => SqlFunc.ToInt64(sc.Id)).ToList();
|
var test1 = db.Queryable<Student, School>((st, sc) => st.SchoolId == sc.Id).Where(st=>st.CreateTime>SqlFunc.GetDate()).Select((st, sc) => SqlFunc.ToInt64(sc.Id)).ToList();
|
||||||
|
//var test2= db.Queryable<Student, School>((st, sc) => st.SchoolId == sc.Id)
|
||||||
|
// .Where(st=>
|
||||||
|
// SqlFunc.IF(st.Id>1)
|
||||||
|
// .Return(st.Id)
|
||||||
|
// .ElseIF(st.Id==1)
|
||||||
|
// .Return(st.SchoolId).End(st.Id)==1).ToList();
|
||||||
}
|
}
|
||||||
public static void Page()
|
public static void Page()
|
||||||
{
|
{
|
||||||
|
@ -40,6 +40,10 @@ namespace OrmTest.Demo
|
|||||||
List<ConditionalModel> conModels = new List<ConditionalModel>();
|
List<ConditionalModel> conModels = new List<ConditionalModel>();
|
||||||
conModels.Add(new ConditionalModel() { FieldName = "id", ConditionalType = ConditionalType.Equal, FieldValue = "1" });
|
conModels.Add(new ConditionalModel() { FieldName = "id", ConditionalType = ConditionalType.Equal, FieldValue = "1" });
|
||||||
conModels.Add(new ConditionalModel() { FieldName = "id", ConditionalType = ConditionalType.Like, FieldValue = "1" });
|
conModels.Add(new ConditionalModel() { FieldName = "id", ConditionalType = ConditionalType.Like, FieldValue = "1" });
|
||||||
|
conModels.Add(new ConditionalModel() { FieldName = "id", ConditionalType = ConditionalType.IsNullOrEmpty });
|
||||||
|
conModels.Add(new ConditionalModel() { FieldName = "id", ConditionalType = ConditionalType.In,FieldValue="1,2,3" });
|
||||||
|
conModels.Add(new ConditionalModel() { FieldName = "id", ConditionalType = ConditionalType.NotIn, FieldValue = "1,2,3" });
|
||||||
|
conModels.Add(new ConditionalModel() { FieldName = "id", ConditionalType = ConditionalType.NoEqual, FieldValue = "1,2,3" });
|
||||||
var student = db.Queryable<Student>().Where(conModels).ToList();
|
var student = db.Queryable<Student>().Where(conModels).ToList();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -12,6 +12,12 @@ namespace SqlSugar
|
|||||||
GreaterThan =2,
|
GreaterThan =2,
|
||||||
GreaterThanOrEqual = 3,
|
GreaterThanOrEqual = 3,
|
||||||
LessThan=4,
|
LessThan=4,
|
||||||
LessThanOrEqual = 5
|
LessThanOrEqual = 5,
|
||||||
|
In=6,
|
||||||
|
NotIn=7,
|
||||||
|
LikeLeft=8,
|
||||||
|
LikeRight=9,
|
||||||
|
NoEqual=10,
|
||||||
|
IsNullOrEmpty=11
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
28
Src/Asp.Net/SqlSugar/ExpressionsToSql/CaseWhen/CaseWhen.cs
Normal file
28
Src/Asp.Net/SqlSugar/ExpressionsToSql/CaseWhen/CaseWhen.cs
Normal file
@ -0,0 +1,28 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Linq.Expressions;
|
||||||
|
using System.Text;
|
||||||
|
|
||||||
|
namespace SqlSugar
|
||||||
|
{
|
||||||
|
public class CaseWhen
|
||||||
|
{
|
||||||
|
public CaseThen ElseIF(bool condition)
|
||||||
|
{
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
public T End<T>(T defaultValue)
|
||||||
|
{
|
||||||
|
return default(T);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
public class CaseThen
|
||||||
|
{
|
||||||
|
|
||||||
|
public CaseWhen Return<T>(T result)
|
||||||
|
{
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -34,7 +34,7 @@ namespace SqlSugar
|
|||||||
{
|
{
|
||||||
get
|
get
|
||||||
{
|
{
|
||||||
return ErrorMessage.GetThrowMessage("Connection open error . {0}", " 连接字符串出错了,实在找不到原因请先Google错误{0}.");
|
return ErrorMessage.GetThrowMessage("Connection open error . {0}", " 连接数据库过程中发生错误,检查服务器是否正常连接字符串是否正确,实在找不到原因请先Google错误信息:{0}.");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -116,5 +116,6 @@ namespace SqlSugar
|
|||||||
/// <typeparam name="T"></typeparam>
|
/// <typeparam name="T"></typeparam>
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
public static Subqueryable<T> Subqueryable<T>() where T:class,new(){ throw new NotSupportedException("Can only be used in expressions");}
|
public static Subqueryable<T> Subqueryable<T>() where T:class,new(){ throw new NotSupportedException("Can only be used in expressions");}
|
||||||
|
public static CaseThen IF(bool condition) { throw new NotSupportedException("Can only be used in expressions"); }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -55,6 +55,10 @@ namespace SqlSugar
|
|||||||
}
|
}
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
else if (IsIfElse(express, methodName)) {
|
||||||
|
List<Expression> expList = new List<Expression>();
|
||||||
|
return;
|
||||||
|
}
|
||||||
if (IsContainsArray(express, methodName, isValidNativeMethod))
|
if (IsContainsArray(express, methodName, isValidNativeMethod))
|
||||||
{
|
{
|
||||||
methodName = "ContainsArray";
|
methodName = "ContainsArray";
|
||||||
@ -70,6 +74,14 @@ namespace SqlSugar
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private bool IsIfElse(MethodCallExpression express, string methodName)
|
||||||
|
{
|
||||||
|
if (methodName == "End"&& express.Object.Type==typeof(CaseWhen))
|
||||||
|
return true;
|
||||||
|
else
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
private void SqlFuncMethod(ExpressionParameter parameter, MethodCallExpression express, bool? isLeft)
|
private void SqlFuncMethod(ExpressionParameter parameter, MethodCallExpression express, bool? isLeft)
|
||||||
{
|
{
|
||||||
CheckMethod(express);
|
CheckMethod(express);
|
||||||
|
@ -330,6 +330,34 @@ namespace SqlSugar
|
|||||||
builder.AppendFormat(temp, type, item.FieldName.ToSqlFilter(), "<=", parameterName);
|
builder.AppendFormat(temp, type, item.FieldName.ToSqlFilter(), "<=", parameterName);
|
||||||
parameters.Add(new SugarParameter(parameterName, item.FieldValue));
|
parameters.Add(new SugarParameter(parameterName, item.FieldValue));
|
||||||
break;
|
break;
|
||||||
|
case ConditionalType.In:
|
||||||
|
if (item.FieldValue == null) item.FieldValue = string.Empty;
|
||||||
|
var inValue1 = ("("+item.FieldValue.Split(',').ToJoinSqlInVals()+")");
|
||||||
|
builder.AppendFormat(temp, type, item.FieldName.ToSqlFilter(), "IN", inValue1);
|
||||||
|
parameters.Add(new SugarParameter(parameterName, item.FieldValue));
|
||||||
|
break;
|
||||||
|
case ConditionalType.NotIn:
|
||||||
|
if (item.FieldValue == null) item.FieldValue = string.Empty;
|
||||||
|
var inValue2 = ("(" + item.FieldValue.Split(',').ToJoinSqlInVals() + ")");
|
||||||
|
builder.AppendFormat(temp, type, item.FieldName.ToSqlFilter(), "NOT IN", inValue2);
|
||||||
|
parameters.Add(new SugarParameter(parameterName, item.FieldValue));
|
||||||
|
break;
|
||||||
|
case ConditionalType.LikeLeft:
|
||||||
|
builder.AppendFormat(temp, type, item.FieldName.ToSqlFilter(), "LIKE", parameterName);
|
||||||
|
parameters.Add(new SugarParameter(parameterName,item.FieldValue + "%"));
|
||||||
|
break;
|
||||||
|
case ConditionalType.LikeRight:
|
||||||
|
builder.AppendFormat(temp, type, item.FieldName.ToSqlFilter(), "LIKE", parameterName);
|
||||||
|
parameters.Add(new SugarParameter(parameterName, "%"+item.FieldValue));
|
||||||
|
break;
|
||||||
|
case ConditionalType.NoEqual:
|
||||||
|
builder.AppendFormat(temp, type, item.FieldName.ToSqlFilter(), "<>", parameterName);
|
||||||
|
parameters.Add(new SugarParameter(parameterName, item.FieldValue));
|
||||||
|
break;
|
||||||
|
case ConditionalType.IsNullOrEmpty:
|
||||||
|
builder.AppendFormat("{0} ({1}) OR ({2}) ", type, item.FieldName.ToSqlFilter()+" IS NULL ", item.FieldName.ToSqlFilter()+" = '' ");
|
||||||
|
parameters.Add(new SugarParameter(parameterName, item.FieldValue));
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -80,6 +80,7 @@
|
|||||||
<Compile Include="Entities\SlaveConnectionConfig.cs" />
|
<Compile Include="Entities\SlaveConnectionConfig.cs" />
|
||||||
<Compile Include="Enum\ConditionalType.cs" />
|
<Compile Include="Enum\ConditionalType.cs" />
|
||||||
<Compile Include="Enum\DbType.cs" />
|
<Compile Include="Enum\DbType.cs" />
|
||||||
|
<Compile Include="ExpressionsToSql\CaseWhen\CaseWhen.cs" />
|
||||||
<Compile Include="ExpressionsToSql\Subquery\Items\ISubOperation.cs" />
|
<Compile Include="ExpressionsToSql\Subquery\Items\ISubOperation.cs" />
|
||||||
<Compile Include="ExpressionsToSql\Subquery\Items\SubAnd.cs" />
|
<Compile Include="ExpressionsToSql\Subquery\Items\SubAnd.cs" />
|
||||||
<Compile Include="ExpressionsToSql\Subquery\Items\SubCount.cs" />
|
<Compile Include="ExpressionsToSql\Subquery\Items\SubCount.cs" />
|
||||||
|
Loading…
Reference in New Issue
Block a user