Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
s0611163
Dapper.Lite
提交
423adda5
D
Dapper.Lite
项目概览
s0611163
/
Dapper.Lite
5 个月 前同步成功
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
D
Dapper.Lite
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
423adda5
编写于
10月 26, 2023
作者:
s0611163
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
where U
上级
e157224b
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
86 addition
and
43 deletion
+86
-43
Dapper.Lite/Dapper.Lite/SqlString/ISqlString.cs
Dapper.Lite/Dapper.Lite/SqlString/ISqlString.cs
+6
-0
Dapper.Lite/Dapper.Lite/SqlString/SqlString.cs
Dapper.Lite/Dapper.Lite/SqlString/SqlString.cs
+37
-0
Dapper.Lite/Dapper.Lite/Utils/ExpressionHelper.cs
Dapper.Lite/Dapper.Lite/Utils/ExpressionHelper.cs
+43
-43
未找到文件。
Dapper.Lite/Dapper.Lite/SqlString/ISqlString.cs
浏览文件 @
423adda5
...
...
@@ -21,6 +21,12 @@ namespace Dapper.Lite
/// </summary>
/// <param name="expression">Lambda 表达式</param>
ISqlString
<
T
>
Where
(
Expression
<
Func
<
T
,
object
>>
expression
);
/// <summary>
/// 追加参数化查询条件SQL
/// </summary>
/// <param name="expression">Lambda 表达式</param>
ISqlString
<
T
>
Where
<
U
>(
Expression
<
Func
<
U
,
object
>>
expression
);
#
endregion
}
...
...
Dapper.Lite/Dapper.Lite/SqlString/SqlString.cs
浏览文件 @
423adda5
...
...
@@ -66,6 +66,43 @@ namespace Dapper.Lite
}
#
endregion
#
region
Where
/// <summary>
/// 追加参数化查询条件SQL
/// </summary>
/// <param name="expression">Lambda 表达式</param>
public
ISqlString
<
T
>
Where
<
U
>(
Expression
<
Func
<
U
,
object
>>
expression
)
{
try
{
ExpressionHelper
<
U
>
condition
=
new
ExpressionHelper
<
U
>(
_provider
,
DbParameterNames
,
SqlStringMethod
.
Where
);
DbParameter
[]
dbParameters
;
string
result
=
condition
.
VisitLambda
(
expression
,
out
dbParameters
);
if
(
dbParameters
!=
null
)
{
result
=
ParamsAddRange
(
dbParameters
,
result
);
}
if
(
Sql
.
ToString
().
Contains
(
" where "
))
{
Sql
.
Append
(
" and "
+
result
);
}
else
{
Sql
.
Append
(
" where "
+
result
);
}
}
catch
{
throw
;
}
return
this
;
}
#
endregion
}
/// <summary>
...
...
Dapper.Lite/Dapper.Lite/Utils/ExpressionHelper.cs
浏览文件 @
423adda5
...
...
@@ -353,6 +353,49 @@ namespace Dapper.Lite
}
#
endregion
#
region
VisitMember
字段或属性
/// <summary>
/// 字段或属性
/// </summary>
public
ExpMemberValue
VisitMember
(
Expression
exp
,
MemberExpression
parent
=
null
)
{
ExpMemberValue
result
=
new
ExpMemberValue
();
if
(
exp
.
NodeType
==
ExpressionType
.
MemberAccess
)
{
MemberExpression
mebmerExp
=
exp
as
MemberExpression
;
if
(
mebmerExp
.
Expression
is
ParameterExpression
)
// 例: exp = t.Remark
{
ParameterExpression
parameterExp
=
mebmerExp
.
Expression
as
ParameterExpression
;
result
.
MemberParentName
=
parameterExp
.
Name
;
result
.
MemberDBField
=
GetDbField
(
mebmerExp
.
Member
.
Name
,
mebmerExp
.
Expression
.
Type
);
result
.
MemberName
=
mebmerExp
.
Member
.
Name
;
result
.
MemberAliasName
=
mebmerExp
.
Member
.
Name
;
if
(
Alias
==
null
&&
mebmerExp
.
Expression
.
Type
==
typeof
(
T
))
{
Alias
=
parameterExp
.
Name
;
}
}
else
{
throw
new
Exception
(
"不支持"
);
}
}
else
if
(
exp
.
NodeType
==
ExpressionType
.
Convert
)
//例:exp = t.OrderTime >= startTime (表达式左边OrderTime的类型是可空类型DateTime?)
{
return
VisitMember
((
exp
as
UnaryExpression
).
Operand
);
}
else
{
throw
new
Exception
(
"不支持"
);
}
return
result
;
}
#
endregion
#
region
VisitValue
取值
/// <summary>
/// 第一级
...
...
@@ -398,49 +441,6 @@ namespace Dapper.Lite
}
#
endregion
#
region
VisitMember
字段或属性
/// <summary>
/// 字段或属性
/// </summary>
public
ExpMemberValue
VisitMember
(
Expression
exp
,
MemberExpression
parent
=
null
)
{
ExpMemberValue
result
=
new
ExpMemberValue
();
if
(
exp
.
NodeType
==
ExpressionType
.
MemberAccess
)
{
MemberExpression
mebmerExp
=
exp
as
MemberExpression
;
if
(
mebmerExp
.
Expression
is
ParameterExpression
)
// 例: exp = t.Remark
{
ParameterExpression
parameterExp
=
mebmerExp
.
Expression
as
ParameterExpression
;
result
.
MemberParentName
=
parameterExp
.
Name
;
result
.
MemberDBField
=
GetDbField
(
mebmerExp
.
Member
.
Name
,
mebmerExp
.
Expression
.
Type
);
result
.
MemberName
=
mebmerExp
.
Member
.
Name
;
result
.
MemberAliasName
=
mebmerExp
.
Member
.
Name
;
if
(
Alias
==
null
&&
mebmerExp
.
Expression
.
Type
==
typeof
(
T
))
{
Alias
=
parameterExp
.
Name
;
}
}
else
{
throw
new
Exception
(
"不支持"
);
}
}
else
if
(
exp
.
NodeType
==
ExpressionType
.
Convert
)
//例:exp = t.OrderTime >= startTime (表达式左边OrderTime的类型是可空类型DateTime?)
{
return
VisitMember
((
exp
as
UnaryExpression
).
Operand
);
}
else
{
throw
new
Exception
(
"不支持"
);
}
return
result
;
}
#
endregion
#
region
InvokeValue
public
object
InvokeValue
(
Expression
exp
)
{
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录