- 修复 表达式树解析 string.Concat 多于3个时的 bug;

This commit is contained in:
2881099 2023-03-24 12:44:54 +08:00
parent 41ba6c37be
commit c83baec65e
28 changed files with 967 additions and 2 deletions

View File

@ -578,6 +578,23 @@ namespace base_entity
BaseEntity.Initialization(fsql, () => _asyncUow.Value); BaseEntity.Initialization(fsql, () => _asyncUow.Value);
#endregion #endregion
var sql1c2 = fsql.Select<User1>()
.GroupBy(a => new { a.Nickname, a.Avatar })
.WithTempQuery(b => new
{
sum = b.Sum(b.Value.Sort),
b.Key.Nickname,
b.Key.Avatar,
})
.OrderByDescending(arg => arg.sum)
.ToSql(arg => new
{
str1 = string.Concat(arg.Nickname, '-', arg.Avatar, '-'),
str2 = string.Concat(arg.Nickname, '-', arg.Avatar)
}); //报错 多括号
//.ToOne(arg => string.Concat(arg.Nickname, '-', arg.Avatar)); //正常
Console.WriteLine(sql1c2);
var xp = new Xpb() var xp = new Xpb()
{ {
Id = "L23035555", Id = "L23035555",

View File

@ -575,6 +575,424 @@
<param name="testCases"></param> <param name="testCases"></param>
<returns></returns> <returns></returns>
</member> </member>
<member name="P:FreeSql.Tests.SqlServer.SqlServerSelectWithTempQueryTest.Issues1467Class.ResponseDeliverInfoDto.Code">
<summary>
测试任务编号,系统自动生成
</summary>
</member>
<member name="P:FreeSql.Tests.SqlServer.SqlServerSelectWithTempQueryTest.Issues1467Class.ResponseDeliverInfoDto.Deliver_Date">
<summary>
送样日期
</summary>
</member>
<member name="P:FreeSql.Tests.SqlServer.SqlServerSelectWithTempQueryTest.Issues1467Class.ResponseDeliverInfoDto.Receiver">
<summary>
接收人
</summary>
</member>
<member name="P:FreeSql.Tests.SqlServer.SqlServerSelectWithTempQueryTest.Issues1467Class.ResponseDeliverInfoDto.Creator">
<summary>
创建人
</summary>
</member>
<member name="P:FreeSql.Tests.SqlServer.SqlServerSelectWithTempQueryTest.Issues1467Class.ResponseDeliverInfoDto.CreatorName">
<summary>
提交人
</summary>
</member>
<member name="P:FreeSql.Tests.SqlServer.SqlServerSelectWithTempQueryTest.Issues1467Class.ResponseDeliverInfoDto.Create_Date">
<summary>
提交日期
</summary>
</member>
<member name="P:FreeSql.Tests.SqlServer.SqlServerSelectWithTempQueryTest.Issues1467Class.ResponseDeliverInfoDto.ReceiverName">
<summary>
接收人姓名
</summary>
</member>
<member name="P:FreeSql.Tests.SqlServer.SqlServerSelectWithTempQueryTest.Issues1467Class.ResponseDeliverInfoDto.SampleSender">
<summary>
送样人员
</summary>
</member>
<member name="P:FreeSql.Tests.SqlServer.SqlServerSelectWithTempQueryTest.Issues1467Class.ResponseDeliverInfoDto.SampleSenderName">
<summary>
送样人员姓名
</summary>
</member>
<member name="P:FreeSql.Tests.SqlServer.SqlServerSelectWithTempQueryTest.Issues1467Class.ResponseDeliverInfoDto.Receive_Date">
<summary>
接收日期
</summary>
</member>
<member name="P:FreeSql.Tests.SqlServer.SqlServerSelectWithTempQueryTest.Issues1467Class.ResponseDeliverInfoDto.Type">
<summary>
测试方式(取字典)
</summary>
</member>
<member name="P:FreeSql.Tests.SqlServer.SqlServerSelectWithTempQueryTest.Issues1467Class.ResponseDeliverInfoDto.ProtocolIds">
<summary>
实验方法ID字符串以分号间隔
</summary>
</member>
<member name="P:FreeSql.Tests.SqlServer.SqlServerSelectWithTempQueryTest.Issues1467Class.ResponseDeliverInfoDto.ProjectId">
<summary>
项目编号原为ProjectID
</summary>
</member>
<member name="P:FreeSql.Tests.SqlServer.SqlServerSelectWithTempQueryTest.Issues1467Class.ResponseDeliverInfoDto.Status">
<summary>
任务状态
</summary>
</member>
<member name="P:FreeSql.Tests.SqlServer.SqlServerSelectWithTempQueryTest.Issues1467Class.ResponseDeliverInfoDto.ReceiveStatus">
<summary>
接收状态
</summary>
</member>
<member name="P:FreeSql.Tests.SqlServer.SqlServerSelectWithTempQueryTest.Issues1467Class.ResponseDeliverInfoDto.RefuseReason">
<summary>
拒收理由
</summary>
</member>
<member name="P:FreeSql.Tests.SqlServer.SqlServerSelectWithTempQueryTest.Issues1467Class.ResponseDeliverInfoDto.RefId">
<summary>
分配关联送样Id
</summary>
</member>
<member name="P:FreeSql.Tests.SqlServer.SqlServerSelectWithTempQueryTest.Issues1467Class.ResponseDeliverInfoDto.RefCount">
<summary>
分配子任务数量
</summary>
</member>
<member name="P:FreeSql.Tests.SqlServer.SqlServerSelectWithTempQueryTest.Issues1467Class.ResponseDeliverInfoDto.BottleCodes">
<summary>
样品编号(目前本身有的)
</summary>
</member>
<member name="P:FreeSql.Tests.SqlServer.SqlServerSelectWithTempQueryTest.Issues1467Class.ResponseDeliverInfoDto.PBottleCodes">
<summary>
样品编号(已经被分配出去的)
</summary>
</member>
<member name="P:FreeSql.Tests.SqlServer.SqlServerSelectWithTempQueryTest.Issues1467Class.ResponseDeliverInfoDto.ProjectCode">
<summary>
项目编号
</summary>
</member>
<member name="P:FreeSql.Tests.SqlServer.SqlServerSelectWithTempQueryTest.Issues1467Class.ResponseDeliverInfoDto.ProjectName">
<summary>
项目名称
</summary>
</member>
<member name="P:FreeSql.Tests.SqlServer.SqlServerSelectWithTempQueryTest.Issues1467Class.BaseEntity.Version">
<summary>
版本号
</summary>
</member>
<member name="P:FreeSql.Tests.SqlServer.SqlServerSelectWithTempQueryTest.Issues1467Class.BaseEntity.Creator">
<summary>
创建者ID
</summary>
</member>
<member name="P:FreeSql.Tests.SqlServer.SqlServerSelectWithTempQueryTest.Issues1467Class.BaseEntity.CreatorName">
<summary>
创建人姓名
</summary>
</member>
<member name="P:FreeSql.Tests.SqlServer.SqlServerSelectWithTempQueryTest.Issues1467Class.BaseEntity.Create_Date">
<summary>
创建时间
</summary>
</member>
<member name="P:FreeSql.Tests.SqlServer.SqlServerSelectWithTempQueryTest.Issues1467Class.BaseEntity.IpAddress">
<summary>
ip地址
</summary>
</member>
<member name="P:FreeSql.Tests.SqlServer.SqlServerSelectWithTempQueryTest.Issues1467Class.BaseEntity.Modifier">
<summary>
修改人id
</summary>
</member>
<member name="P:FreeSql.Tests.SqlServer.SqlServerSelectWithTempQueryTest.Issues1467Class.BaseEntity.ModifierName">
<summary>
修改人姓名
</summary>
</member>
<member name="P:FreeSql.Tests.SqlServer.SqlServerSelectWithTempQueryTest.Issues1467Class.BaseEntity.Modifier_IP">
<summary>
修改人ip
</summary>
</member>
<member name="P:FreeSql.Tests.SqlServer.SqlServerSelectWithTempQueryTest.Issues1467Class.BaseEntity.Modify_Date">
<summary>
修改时间
</summary>
</member>
<member name="P:FreeSql.Tests.SqlServer.SqlServerSelectWithTempQueryTest.Issues1467Class.BaseEntity.Auditstatus">
<summary>
审批状态,由审批模块返回
</summary>
</member>
<member name="P:FreeSql.Tests.SqlServer.SqlServerSelectWithTempQueryTest.Issues1467Class.BaseEntity.Status">
<summary>
信息状态
</summary>
</member>
<member name="P:FreeSql.Tests.SqlServer.SqlServerSelectWithTempQueryTest.Issues1467Class.BaseEntity.Comments">
<summary>
备注
</summary>
</member>
<member name="P:FreeSql.Tests.SqlServer.SqlServerSelectWithTempQueryTest.Issues1467Class.BaseEntity.OrganCode">
<summary>
组织编码
</summary>
</member>
<member name="T:FreeSql.Tests.SqlServer.SqlServerSelectWithTempQueryTest.Issues1467Class.DeliverInfo">
<summary>
测试任务表
主表
</summary>
</member>
<member name="P:FreeSql.Tests.SqlServer.SqlServerSelectWithTempQueryTest.Issues1467Class.DeliverInfo.Code">
<summary>
测试任务编号,系统自动生成
</summary>
</member>
<member name="P:FreeSql.Tests.SqlServer.SqlServerSelectWithTempQueryTest.Issues1467Class.DeliverInfo.Deliver_Date">
<summary>
送样日期
</summary>
</member>
<member name="P:FreeSql.Tests.SqlServer.SqlServerSelectWithTempQueryTest.Issues1467Class.DeliverInfo.Receiver">
<summary>
接收人
</summary>
</member>
<member name="P:FreeSql.Tests.SqlServer.SqlServerSelectWithTempQueryTest.Issues1467Class.DeliverInfo.ReceiverName">
<summary>
接收人姓名
</summary>
</member>
<member name="P:FreeSql.Tests.SqlServer.SqlServerSelectWithTempQueryTest.Issues1467Class.DeliverInfo.SampleSender">
<summary>
送样人员
</summary>
</member>
<member name="P:FreeSql.Tests.SqlServer.SqlServerSelectWithTempQueryTest.Issues1467Class.DeliverInfo.SampleSenderName">
<summary>
送样人员姓名
</summary>
</member>
<member name="P:FreeSql.Tests.SqlServer.SqlServerSelectWithTempQueryTest.Issues1467Class.DeliverInfo.Receive_Date">
<summary>
接收日期
</summary>
</member>
<member name="P:FreeSql.Tests.SqlServer.SqlServerSelectWithTempQueryTest.Issues1467Class.DeliverInfo.Type">
<summary>
测试方式(取字典)
</summary>
</member>
<member name="P:FreeSql.Tests.SqlServer.SqlServerSelectWithTempQueryTest.Issues1467Class.DeliverInfo.ProjectId">
<summary>
项目编号
</summary>
</member>
<member name="P:FreeSql.Tests.SqlServer.SqlServerSelectWithTempQueryTest.Issues1467Class.DeliverInfo.Receivestatus">
<summary>
接收状态
</summary>
</member>
<member name="P:FreeSql.Tests.SqlServer.SqlServerSelectWithTempQueryTest.Issues1467Class.DeliverInfo.RefuseReason">
<summary>
拒收理由
</summary>
</member>
<member name="P:FreeSql.Tests.SqlServer.SqlServerSelectWithTempQueryTest.Issues1467Class.DeliverInfo.RefId">
<summary>
分配关联送样ID
</summary>
</member>
<member name="P:FreeSql.Tests.SqlServer.SqlServerSelectWithTempQueryTest.Issues1467Class.DeliverInfo.RefCount">
<summary>
分配子任务数量
</summary>
</member>
<member name="P:FreeSql.Tests.SqlServer.SqlServerSelectWithTempQueryTest.Issues1467Class.DeliverInfo.CustomColumns">
<summary>
自定义表单内容
</summary>
</member>
<member name="T:FreeSql.Tests.SqlServer.SqlServerSelectWithTempQueryTest.Issues1467Class.DeliverInfoBottle">
<summary>
送样样品中间表
</summary>
</member>
<member name="P:FreeSql.Tests.SqlServer.SqlServerSelectWithTempQueryTest.Issues1467Class.DeliverInfoBottle.BottleCode">
<summary>
样品编号
</summary>
</member>
<member name="P:FreeSql.Tests.SqlServer.SqlServerSelectWithTempQueryTest.Issues1467Class.DeliverInfoBottle.DeliverId">
<summary>
送样ID
</summary>
</member>
<member name="P:FreeSql.Tests.SqlServer.SqlServerSelectWithTempQueryTest.Issues1467Class.DeliverInfoBottle.Amount">
<summary>
送样量
</summary>
</member>
<member name="T:FreeSql.Tests.SqlServer.SqlServerSelectWithTempQueryTest.Issues1467Class.DeliverProtocol">
<summary>
测试任务送样方法表
</summary>
</member>
<member name="P:FreeSql.Tests.SqlServer.SqlServerSelectWithTempQueryTest.Issues1467Class.DeliverProtocol.Id">
<summary>
数据主键
</summary>
</member>
<member name="P:FreeSql.Tests.SqlServer.SqlServerSelectWithTempQueryTest.Issues1467Class.DeliverProtocol.DeliverId">
<summary>
测试任务ID
</summary>
</member>
<member name="P:FreeSql.Tests.SqlServer.SqlServerSelectWithTempQueryTest.Issues1467Class.DeliverProtocol.ProtocolId">
<summary>
实验方法ID
</summary>
</member>
<member name="T:FreeSql.Tests.SqlServer.SqlServerSelectWithTempQueryTest.Issues1467Class.Project">
<summary>
项目信息
</summary>
<returns></returns>
</member>
<member name="P:FreeSql.Tests.SqlServer.SqlServerSelectWithTempQueryTest.Issues1467Class.Project.ProjectCode">
<summary>
项目编号
</summary>
</member>
<member name="P:FreeSql.Tests.SqlServer.SqlServerSelectWithTempQueryTest.Issues1467Class.Project.ProjectName">
<summary>
项目名称
</summary>
</member>
<member name="P:FreeSql.Tests.SqlServer.SqlServerSelectWithTempQueryTest.Issues1467Class.Project.Department">
<summary>
所属部门
</summary>
</member>
<member name="P:FreeSql.Tests.SqlServer.SqlServerSelectWithTempQueryTest.Issues1467Class.Project.Description">
<summary>
说明
</summary>
</member>
<member name="P:FreeSql.Tests.SqlServer.SqlServerSelectWithTempQueryTest.Issues1467Class.Project.StartTime_Plan">
<summary>
计划开始时间
</summary>
</member>
<member name="P:FreeSql.Tests.SqlServer.SqlServerSelectWithTempQueryTest.Issues1467Class.Project.EndTime_Plan">
<summary>
计划结束时间
</summary>
</member>
<member name="P:FreeSql.Tests.SqlServer.SqlServerSelectWithTempQueryTest.Issues1467Class.Project.StartTime">
<summary>
实际开始时间
</summary>
</member>
<member name="P:FreeSql.Tests.SqlServer.SqlServerSelectWithTempQueryTest.Issues1467Class.Project.EndTime">
<summary>
实际结束时间
</summary>
</member>
<member name="P:FreeSql.Tests.SqlServer.SqlServerSelectWithTempQueryTest.Issues1467Class.Project.IsSync">
<summary>
是否是PM同步过来的
</summary>
</member>
<member name="P:FreeSql.Tests.SqlServer.SqlServerSelectWithTempQueryTest.Issues1467Class.Project.RefId">
<summary>
PM同步的项目主键信息
</summary>
</member>
<member name="P:FreeSql.Tests.SqlServer.SqlServerSelectWithTempQueryTest.Issues1467Class.Project.IsDisable">
<summary>
是否禁用 1是 0 否
</summary>
</member>
<member name="P:FreeSql.Tests.SqlServer.SqlServerSelectWithTempQueryTest.Issues1467Class.Project.DeptId">
<summary>
部门Id
</summary>
</member>
<member name="T:FreeSql.Tests.SqlServer.SqlServerSelectWithTempQueryTest.Issues1467Class.Biologys">
<summary>
生物模块信息表
主表
</summary>
</member>
<member name="P:FreeSql.Tests.SqlServer.SqlServerSelectWithTempQueryTest.Issues1467Class.Biologys.Code">
<summary>
生物编号,系统自动生成
</summary>
</member>
<member name="P:FreeSql.Tests.SqlServer.SqlServerSelectWithTempQueryTest.Issues1467Class.Biologys.ProjectId">
<summary>
项目编号
</summary>
</member>
<member name="P:FreeSql.Tests.SqlServer.SqlServerSelectWithTempQueryTest.Issues1467Class.Biologys.BottleCode">
<summary>
样品编号
</summary>
</member>
<member name="P:FreeSql.Tests.SqlServer.SqlServerSelectWithTempQueryTest.Issues1467Class.Biologys.ProtocolId">
<summary>
测试方法Id
</summary>
</member>
<member name="P:FreeSql.Tests.SqlServer.SqlServerSelectWithTempQueryTest.Issues1467Class.Biologys.Experiment_Date">
<summary>
实验日期
</summary>
</member>
<member name="P:FreeSql.Tests.SqlServer.SqlServerSelectWithTempQueryTest.Issues1467Class.Biologys.Deliver_Date">
<summary>
送样日期
</summary>
</member>
<member name="P:FreeSql.Tests.SqlServer.SqlServerSelectWithTempQueryTest.Issues1467Class.Biologys.DeliverId">
<summary>
测试任务ID
</summary>
</member>
<member name="P:FreeSql.Tests.SqlServer.SqlServerSelectWithTempQueryTest.Issues1467Class.Biologys.DeliverCode">
<summary>
测试任务编号
</summary>
</member>
<member name="P:FreeSql.Tests.SqlServer.SqlServerSelectWithTempQueryTest.Issues1467Class.Biologys.BookNumber">
<summary>
记录编号
</summary>
</member>
<member name="P:FreeSql.Tests.SqlServer.SqlServerSelectWithTempQueryTest.Issues1467Class.Biologys.CustomColumns">
<summary>
自定义表单数据
</summary>
</member>
<member name="P:FreeSql.Tests.SqlServer.SqlServerSelectWithTempQueryTest.Issues1467Class.Biologys.BiologyType">
<summary>
测试类型
</summary>
</member>
<member name="T:FreeSql.Tests.SqlServer.SqlServerCodeFirstTest.tbdot01"> <member name="T:FreeSql.Tests.SqlServer.SqlServerCodeFirstTest.tbdot01">
<summary> <summary>
表中带点 表中带点

View File

@ -9,6 +9,484 @@ namespace FreeSql.Tests.SqlServer
{ {
public class SqlServerSelectWithTempQueryTest public class SqlServerSelectWithTempQueryTest
{ {
[Fact]
public void Issues1467()
{
var fsql = g.mysql;
//测试任务信息子查询
var deliverInfoQuery = fsql.Select<Issues1467Class.DeliverInfo, Issues1467Class.DeliverInfo, Issues1467Class.DeliverInfoBottle, Issues1467Class.DeliverInfoBottle>()
.LeftJoin(x => x.t1.Id == x.t2.RefId)
.LeftJoin(x => x.t3.DeliverId == x.t1.Id)
.LeftJoin(x => x.t4.DeliverId == x.t2.Id)
.GroupBy(x => x.t1.Id)
.WithTempQuery(x => new
{
x.Value.Item1.Id,
Bottlecodes = SqlExt.GroupConcat(x.Value.Item3.BottleCode).ToValue(),
Pbottlecodes = SqlExt.GroupConcat(x.Value.Item4.BottleCode).ToValue()
});
//测试任务送样子查询
var deliverProtocolQuery = fsql.Select<Issues1467Class.DeliverProtocol>()
.WithTempQuery(x => new
{
x.DeliverId,
ProtocolIds = SqlExt.GroupConcat(x.ProtocolId).ToValue()
});
//接收状态
var deliverStatusQuery = fsql.Select<Issues1467Class.DeliverInfo, Issues1467Class.DeliverInfoBottle, Issues1467Class.Biologys>()
.LeftJoin(x => x.t1.Id == x.t2.DeliverId)
.LeftJoin(x => x.t3.DeliverId == x.t1.Id)
.Where(x => x.t3.Status != 1);
//项目信息子查询
var projectQuery = fsql.Select<Issues1467Class.Project>();
var sql1 = fsql.Select<Issues1467Class.DeliverInfo>()
.FromQuery(deliverInfoQuery, deliverProtocolQuery, projectQuery)
.LeftJoin(x => x.t1.Id == x.t2.Id)
.LeftJoin(x => x.t1.Id == x.t3.DeliverId)
.LeftJoin(x => x.t1.ProjectId == x.t4.Id)
.Page(1, 20)
.ToSql(x => new Issues1467Class.ResponseDeliverInfoDto
{
ProjectCode = x.t4.ProjectCode,
ProjectName = x.t4.ProjectName,
ReceiveStatus = x.t1.Receivestatus == 1 ? x.t1.Receivestatus.Value : fsql.Select<Issues1467Class.DeliverInfo, Issues1467Class.DeliverInfoBottle, Issues1467Class.Biologys>()
.LeftJoin(y => y.t1.Id == y.t2.DeliverId)
.LeftJoin(y => y.t3.DeliverId == y.t1.Id)
.Where(y => y.t3.Status != 1)
.Where(y => y.t1.Id == x.t1.Id || y.t1.RefId == x.t1.Id).Count(),//deliverStatusQuery.Where(y => y.t1.Id == x.t1.Id || y.t1.RefId == x.t1.Id).Count(),
RefCount = fsql.Select<Issues1467Class.DeliverInfo>().Where(y => y.RefId == x.t1.Id).Count()
});
Assert.Equal(@"SELECT a.`Id` as1, a.`Code` as2, a.`Deliver_Date` as3, a.`Receiver` as4, a.`Creator` as5, a.`CreatorName` as6, a.`Create_Date` as7, a.`ReceiverName` as8, a.`SampleSender` as9, a.`SampleSenderName` as10, a.`Receive_Date` as11, a.`Type` as12, htc.`ProtocolIds` as13, a.`ProjectID` as14, a.`Status` as15, a.`RefuseReason` as16, a.`RefId` as17, htb.`Bottlecodes` as18, htb.`Pbottlecodes` as19, htd.`ProjectCode` as20, htd.`ProjectName` as21, case when a.`Receivestatus` = 1 then a.`Receivestatus` else (SELECT count(1)
FROM `Issues1467Class_deliverinfo` ht1
LEFT JOIN `Issues1467Class_deliverinfo_bottle` ht2 ON ht1.`Id` = ht2.`DeliverId`
LEFT JOIN `Issues1467Class_biologys` ht3 ON ht3.`DeliverId` = ht1.`Id`
WHERE (ht3.`Status` <> 1) AND ((ht1.`Id` = a.`Id` OR ht1.`RefId` = a.`Id`))) end as22, (SELECT count(1)
FROM `Issues1467Class_deliverinfo` y
WHERE (y.`RefId` = a.`Id`)) as23
FROM `Issues1467Class_deliverinfo` a
LEFT JOIN (
SELECT a.`Id`, group_concat(c.`BottleCode`) `Bottlecodes`, group_concat(d.`BottleCode`) `Pbottlecodes`
FROM `Issues1467Class_deliverinfo` a
LEFT JOIN `Issues1467Class_deliverinfo` b ON a.`Id` = b.`RefId`
LEFT JOIN `Issues1467Class_deliverinfo_bottle` c ON c.`DeliverId` = a.`Id`
LEFT JOIN `Issues1467Class_deliverinfo_bottle` d ON d.`DeliverId` = b.`Id`
GROUP BY a.`Id` ) htb ON a.`Id` = htb.`Id`
LEFT JOIN (
SELECT a.`DeliverID` `DeliverId`, group_concat(a.`ProtocolID`) `ProtocolIds`
FROM `Issues1467Class_deliverinfo_protocols` a ) htc ON a.`Id` = htc.`DeliverId`
LEFT JOIN `Issues1467Class_project` htd ON a.`ProjectID` = htd.`Id`
limit 0,20", sql1);
var reponse = fsql.Select<Issues1467Class.DeliverInfo>()
.FromQuery(deliverInfoQuery, deliverProtocolQuery, projectQuery)
.LeftJoin(x => x.t1.Id == x.t2.Id)
.LeftJoin(x => x.t1.Id == x.t3.DeliverId)
.LeftJoin(x => x.t1.ProjectId == x.t4.Id)
.Page(1, 20)
.Count(out var total)
.ToSql(x => new Issues1467Class.ResponseDeliverInfoDto
{
ProjectCode = x.t4.ProjectCode,
ProjectName = x.t4.ProjectName,
ReceiveStatus = x.t1.Receivestatus == 1 ? x.t1.Receivestatus.Value : deliverStatusQuery.Where(y => y.t1.Id == x.t1.Id || y.t1.RefId == x.t1.Id).Count(),
RefCount = fsql.Select<Issues1467Class.DeliverInfo>().Where(y => y.RefId == x.t1.Id).Count()
});
}
#region #1467 class
public class Issues1467Class
{
public class ResponseDeliverInfoDto
{
public string Id { get; set; }
/// <summary>
/// 测试任务编号,系统自动生成
/// </summary>
public string Code { get; set; }
/// <summary>
/// 送样日期
/// </summary>
public DateTime Deliver_Date { get; set; }
/// <summary>
/// 接收人
/// </summary>
public string Receiver { get; set; }
/// <summary>
/// 创建人
/// </summary>
public string Creator { get; set; }
/// <summary>
/// 提交人
/// </summary>
public string CreatorName { get; set; }
/// <summary>
/// 提交日期
/// </summary>
public DateTime Create_Date { get; set; }
/// <summary>
/// 接收人姓名
/// </summary>
public string ReceiverName { get; set; }
/// <summary>
/// 送样人员
/// </summary>
public string SampleSender { get; set; }
/// <summary>
/// 送样人员姓名
/// </summary>
public string SampleSenderName { get; set; }
/// <summary>
/// 接收日期
/// </summary>
public DateTime? Receive_Date { get; set; }
/// <summary>
/// 测试方式(取字典)
/// </summary>
public string Type { get; set; }
/// <summary>
/// 实验方法ID字符串以分号间隔
/// </summary>
public string ProtocolIds { get; set; }
/// <summary>
/// 项目编号原为ProjectID
/// </summary>
public string ProjectId { get; set; }
/// <summary>
/// 任务状态
/// </summary>
public int Status { get; set; }
/// <summary>
/// 接收状态
/// </summary>
public long ReceiveStatus { get; set; }
/// <summary>
/// 拒收理由
/// </summary>
public string RefuseReason { get; set; }
/// <summary>
/// 分配关联送样Id
/// </summary>
public string RefId { get; set; }
/// <summary>
/// 分配子任务数量
/// </summary>
public long RefCount { get; set; }
/// <summary>
/// 样品编号(目前本身有的)
/// </summary>
public string BottleCodes { get; set; }
/// <summary>
/// 样品编号(已经被分配出去的)
/// </summary>
public string PBottleCodes { get; set; }
/// <summary>
/// 项目编号
/// </summary>
public string ProjectCode { get; set; }
/// <summary>
/// 项目名称
/// </summary>
public string ProjectName { get; set; }
}
public class BaseEntity
{
[Column(IsPrimary = true)]
public string Id { get; set; }
/// <summary>
/// 版本号
/// </summary>
public string Version { get; set; }
/// <summary>
/// 创建者ID
/// </summary>
public string Creator { get; set; }
/// <summary>
/// 创建人姓名
/// </summary>
public string CreatorName { get; set; }
/// <summary>
/// 创建时间
/// </summary>
[Column(ServerTime = DateTimeKind.Local, CanUpdate = false)]
public DateTime Create_Date { get; set; }
/// <summary>
/// ip地址
/// </summary>
[Column(Name = "IP_Address")]
public string IpAddress { get; set; }
/// <summary>
/// 修改人id
/// </summary>
public string Modifier { get; set; }
/// <summary>
/// 修改人姓名
/// </summary>
public string ModifierName { get; set; }
/// <summary>
/// 修改人ip
/// </summary>
public string Modifier_IP { get; set; }
/// <summary>
/// 修改时间
/// </summary>
[Column(ServerTime = DateTimeKind.Local)]
public DateTime Modify_Date { get; set; }
/// <summary>
/// 审批状态,由审批模块返回
/// </summary>
public int? Auditstatus { get; set; }
/// <summary>
/// 信息状态
/// </summary>
public int Status { get; set; }
/// <summary>
/// 备注
/// </summary>
public string Comments { get; set; }
/// <summary>
/// 组织编码
/// </summary>
public string OrganCode { get; set; }
}
/// <summary>
/// 测试任务表
/// 主表
/// </summary>
[Table(Name = "Issues1467Class_deliverinfo")]
public class DeliverInfo : BaseEntity
{
/// <summary>
/// 测试任务编号,系统自动生成
/// </summary>
public string Code { get; set; }
/// <summary>
/// 送样日期
/// </summary>
public DateTime Deliver_Date { get; set; }
/// <summary>
/// 接收人
/// </summary>
public string Receiver { get; set; }
/// <summary>
/// 接收人姓名
/// </summary>
public string ReceiverName { get; set; }
/// <summary>
/// 送样人员
/// </summary>
public string SampleSender { get; set; }
/// <summary>
/// 送样人员姓名
/// </summary>
public string SampleSenderName { get; set; }
/// <summary>
/// 接收日期
/// </summary>
public DateTime? Receive_Date { get; set; }
/// <summary>
/// 测试方式(取字典)
/// </summary>
public string Type { get; set; }
/// <summary>
/// 项目编号
/// </summary>
[Column(Name = "ProjectID")]
public string ProjectId { get; set; }
/// <summary>
/// 接收状态
/// </summary>
public int? Receivestatus { get; set; }
/// <summary>
/// 拒收理由
/// </summary>
public string RefuseReason { get; set; }
/// <summary>
/// 分配关联送样ID
/// </summary>
public string RefId { get; set; }
/// <summary>
/// 分配子任务数量
/// </summary>
[Column(IsIgnore = true)]
public int RefCount { get; set; }
/// <summary>
/// 自定义表单内容
/// </summary>
public string CustomColumns { get; set; }
}
/// <summary>
/// 送样样品中间表
/// </summary>
[Table(Name = "Issues1467Class_deliverinfo_bottle")]
public class DeliverInfoBottle
{
[Column(IsPrimary = true)]
public string Id { get; set; }
/// <summary>
/// 样品编号
/// </summary>
public string BottleCode { get; set; }
/// <summary>
/// 送样ID
/// </summary>
public string DeliverId { get; set; }
/// <summary>
/// 送样量
/// </summary>
public string Amount { get; set; }
}
/// <summary>
/// 测试任务送样方法表
/// </summary>
[Table(Name = "Issues1467Class_deliverinfo_protocols")]
public class DeliverProtocol
{
/// <summary>
/// 数据主键
/// </summary>
[Column(IsPrimary = true)]
public string Id { get; set; }
/// <summary>
/// 测试任务ID
/// </summary>
[Column(Name = "DeliverID")]
public string DeliverId { get; set; }
/// <summary>
/// 实验方法ID
/// </summary>
[Column(Name = "ProtocolID")]
public string ProtocolId { get; set; }
}
/// <summary>
/// 项目信息
/// </summary>
/// <returns></returns>
[Table(Name = "Issues1467Class_project")]
public class Project : BaseEntity
{
/// <summary>
/// 项目编号
/// </summary>
public string ProjectCode { get; set; }
/// <summary>
/// 项目名称
/// </summary>
public string ProjectName { get; set; }
/// <summary>
/// 所属部门
/// </summary>
public string Department { get; set; }
/// <summary>
/// 说明
/// </summary>
public string Description { get; set; }
/// <summary>
/// 计划开始时间
/// </summary>
public DateTime? StartTime_Plan { get; set; }
/// <summary>
/// 计划结束时间
/// </summary>
public DateTime? EndTime_Plan { get; set; }
/// <summary>
/// 实际开始时间
/// </summary>
public DateTime? StartTime { get; set; }
/// <summary>
/// 实际结束时间
/// </summary>
public DateTime? EndTime { get; set; }
/// <summary>
/// 是否是PM同步过来的
/// </summary>
public int IsSync { get; set; }
/// <summary>
/// PM同步的项目主键信息
/// </summary>
[Column(Name = "RefID")]
public int RefId { get; set; }
/// <summary>
/// 是否禁用 1是 0 否
/// </summary>
public int IsDisable { get; set; }
/// <summary>
/// 部门Id
/// </summary>
public int DeptId { get; set; }
}
/// <summary>
/// 生物模块信息表
/// 主表
/// </summary>
[Table(Name = "Issues1467Class_biologys")]
public class Biologys : BaseEntity
{
/// <summary>
/// 生物编号,系统自动生成
/// </summary>
public string Code { get; set; }
/// <summary>
/// 项目编号
/// </summary>
[Column(Name = "ProjectID")]
public string ProjectId { get; set; }
/// <summary>
/// 样品编号
/// </summary>
public string BottleCode { get; set; }
/// <summary>
/// 测试方法Id
/// </summary>
[Column(Name = "ProtocolID")]
public string ProtocolId { get; set; }
/// <summary>
/// 实验日期
/// </summary>
public DateTime? Experiment_Date { get; set; }
/// <summary>
/// 送样日期
/// </summary>
public DateTime? Deliver_Date { get; set; }
/// <summary>
/// 测试任务ID
/// </summary>
public string DeliverId { get; set; }
/// <summary>
/// 测试任务编号
/// </summary>
public string DeliverCode { get; set; }
/// <summary>
/// 记录编号
/// </summary>
public string BookNumber { get; set; }
/// <summary>
/// 自定义表单数据
/// </summary>
public string CustomColumns { get; set; }
/// <summary>
/// 测试类型
/// </summary>
public string BiologyType { get; set; }
}
}
#endregion
[Fact] [Fact]
public void IssuesWithTempQueryAndDto() public void IssuesWithTempQueryAndDto()
{ {

View File

@ -281,6 +281,8 @@ namespace FreeSql.ClickHouse
var arg2 = getExp(exp.Arguments[0]); var arg2 = getExp(exp.Arguments[0]);
return $"({arg2} is null or {arg2} = '' or ltrim({arg2}) = '')"; return $"({arg2} is null or {arg2} = '' or ltrim({arg2}) = '')";
case "Concat": case "Concat":
if (exp.Arguments.Count == 1 && exp.Arguments[0].NodeType == ExpressionType.NewArrayInit && exp.Arguments[0] is NewArrayExpression concatNewArrExp)
return _common.StringConcat(concatNewArrExp.Expressions.Select(a => getExp(a)).ToArray(), null);
return _common.StringConcat(exp.Arguments.Select(a => getExp(a)).ToArray(), null); return _common.StringConcat(exp.Arguments.Select(a => getExp(a)).ToArray(), null);
case "Format": case "Format":
if (exp.Arguments[0].NodeType != ExpressionType.Constant) throw new Exception(CoreStrings.Not_Implemented_Expression_ParameterUseConstant(exp,exp.Arguments[0])); if (exp.Arguments[0].NodeType != ExpressionType.Constant) throw new Exception(CoreStrings.Not_Implemented_Expression_ParameterUseConstant(exp,exp.Arguments[0]));

View File

@ -262,7 +262,10 @@ namespace FreeSql.Custom
{ {
case "IsNullOrEmpty": return _utils.Adapter.LambdaString_IsNullOrEmpty(getExp(exp.Arguments[0])); case "IsNullOrEmpty": return _utils.Adapter.LambdaString_IsNullOrEmpty(getExp(exp.Arguments[0]));
case "IsNullOrWhiteSpace": return _utils.Adapter.LambdaString_IsNullOrWhiteSpace(getExp(exp.Arguments[0])); case "IsNullOrWhiteSpace": return _utils.Adapter.LambdaString_IsNullOrWhiteSpace(getExp(exp.Arguments[0]));
case "Concat": return _common.StringConcat(exp.Arguments.Select(a => getExp(a)).ToArray(), exp.Arguments.Select(a => a.Type).ToArray()); case "Concat":
if (exp.Arguments.Count == 1 && exp.Arguments[0].NodeType == ExpressionType.NewArrayInit && exp.Arguments[0] is NewArrayExpression concatNewArrExp)
return _common.StringConcat(concatNewArrExp.Expressions.Select(a => getExp(a)).ToArray(), concatNewArrExp.Expressions.Select(a => a.Type).ToArray());
return _common.StringConcat(exp.Arguments.Select(a => getExp(a)).ToArray(), exp.Arguments.Select(a => a.Type).ToArray());
} }
} }
else else

View File

@ -262,6 +262,8 @@ namespace FreeSql.Custom.MySql
var arg2 = getExp(exp.Arguments[0]); var arg2 = getExp(exp.Arguments[0]);
return $"({arg2} is null or {arg2} = '' or ltrim({arg2}) = '')"; return $"({arg2} is null or {arg2} = '' or ltrim({arg2}) = '')";
case "Concat": case "Concat":
if (exp.Arguments.Count == 1 && exp.Arguments[0].NodeType == ExpressionType.NewArrayInit && exp.Arguments[0] is NewArrayExpression concatNewArrExp)
return _common.StringConcat(concatNewArrExp.Expressions.Select(a => getExp(a)).ToArray(), null);
return _common.StringConcat(exp.Arguments.Select(a => getExp(a)).ToArray(), null); return _common.StringConcat(exp.Arguments.Select(a => getExp(a)).ToArray(), null);
case "Format": case "Format":
if (exp.Arguments[0].NodeType != ExpressionType.Constant) throw new Exception(CoreStrings.Not_Implemented_Expression_ParameterUseConstant(exp,exp.Arguments[0])); if (exp.Arguments[0].NodeType != ExpressionType.Constant) throw new Exception(CoreStrings.Not_Implemented_Expression_ParameterUseConstant(exp,exp.Arguments[0]));

View File

@ -266,6 +266,8 @@ namespace FreeSql.Custom.Oracle
var arg2 = getExp(exp.Arguments[0]); var arg2 = getExp(exp.Arguments[0]);
return $"({arg2} is null or {arg2} = '' or ltrim({arg2}) = '')"; return $"({arg2} is null or {arg2} = '' or ltrim({arg2}) = '')";
case "Concat": case "Concat":
if (exp.Arguments.Count == 1 && exp.Arguments[0].NodeType == ExpressionType.NewArrayInit && exp.Arguments[0] is NewArrayExpression concatNewArrExp)
return _common.StringConcat(concatNewArrExp.Expressions.Select(a => getExp(a)).ToArray(), null);
return _common.StringConcat(exp.Arguments.Select(a => getExp(a)).ToArray(), null); return _common.StringConcat(exp.Arguments.Select(a => getExp(a)).ToArray(), null);
case "Format": case "Format":
if (exp.Arguments[0].NodeType != ExpressionType.Constant) throw new Exception(CoreStrings.Not_Implemented_Expression_ParameterUseConstant(exp,exp.Arguments[0])); if (exp.Arguments[0].NodeType != ExpressionType.Constant) throw new Exception(CoreStrings.Not_Implemented_Expression_ParameterUseConstant(exp,exp.Arguments[0]));

View File

@ -350,6 +350,8 @@ namespace FreeSql.Custom.PostgreSQL
var arg2 = getExp(exp.Arguments[0]); var arg2 = getExp(exp.Arguments[0]);
return $"({arg2} is null or {arg2} = '' or ltrim({arg2}) = '')"; return $"({arg2} is null or {arg2} = '' or ltrim({arg2}) = '')";
case "Concat": case "Concat":
if (exp.Arguments.Count == 1 && exp.Arguments[0].NodeType == ExpressionType.NewArrayInit && exp.Arguments[0] is NewArrayExpression concatNewArrExp)
return _common.StringConcat(concatNewArrExp.Expressions.Select(a => getExp(a)).ToArray(), null);
return _common.StringConcat(exp.Arguments.Select(a => getExp(a)).ToArray(), null); return _common.StringConcat(exp.Arguments.Select(a => getExp(a)).ToArray(), null);
case "Format": case "Format":
if (exp.Arguments[0].NodeType != ExpressionType.Constant) throw new Exception(CoreStrings.Not_Implemented_Expression_ParameterUseConstant(exp,exp.Arguments[0])); if (exp.Arguments[0].NodeType != ExpressionType.Constant) throw new Exception(CoreStrings.Not_Implemented_Expression_ParameterUseConstant(exp,exp.Arguments[0]));

View File

@ -272,6 +272,8 @@ namespace FreeSql.Custom.SqlServer
var arg2 = getExp(exp.Arguments[0]); var arg2 = getExp(exp.Arguments[0]);
return $"({arg2} is null or {arg2} = '' or ltrim({arg2}) = '')"; return $"({arg2} is null or {arg2} = '' or ltrim({arg2}) = '')";
case "Concat": case "Concat":
if (exp.Arguments.Count == 1 && exp.Arguments[0].NodeType == ExpressionType.NewArrayInit && exp.Arguments[0] is NewArrayExpression concatNewArrExp)
return _common.StringConcat(concatNewArrExp.Expressions.Select(a => getExp(a)).ToArray(), concatNewArrExp.Expressions.Select(a => a.Type).ToArray());
return _common.StringConcat(exp.Arguments.Select(a => getExp(a)).ToArray(), exp.Arguments.Select(a => a.Type).ToArray()); return _common.StringConcat(exp.Arguments.Select(a => getExp(a)).ToArray(), exp.Arguments.Select(a => a.Type).ToArray());
case "Format": case "Format":
if (exp.Arguments[0].NodeType != ExpressionType.Constant) throw new Exception(CoreStrings.Not_Implemented_Expression_ParameterUseConstant(exp,exp.Arguments[0])); if (exp.Arguments[0].NodeType != ExpressionType.Constant) throw new Exception(CoreStrings.Not_Implemented_Expression_ParameterUseConstant(exp,exp.Arguments[0]));

View File

@ -266,6 +266,8 @@ namespace FreeSql.Dameng
var arg2 = getExp(exp.Arguments[0]); var arg2 = getExp(exp.Arguments[0]);
return $"({arg2} is null or {arg2} = '' or ltrim({arg2}) = '')"; return $"({arg2} is null or {arg2} = '' or ltrim({arg2}) = '')";
case "Concat": case "Concat":
if (exp.Arguments.Count == 1 && exp.Arguments[0].NodeType == ExpressionType.NewArrayInit && exp.Arguments[0] is NewArrayExpression concatNewArrExp)
return _common.StringConcat(concatNewArrExp.Expressions.Select(a => getExp(a)).ToArray(), null);
return _common.StringConcat(exp.Arguments.Select(a => getExp(a)).ToArray(), null); return _common.StringConcat(exp.Arguments.Select(a => getExp(a)).ToArray(), null);
case "Format": case "Format":
if (exp.Arguments[0].NodeType != ExpressionType.Constant) throw new Exception(CoreStrings.Not_Implemented_Expression_ParameterUseConstant(exp,exp.Arguments[0])); if (exp.Arguments[0].NodeType != ExpressionType.Constant) throw new Exception(CoreStrings.Not_Implemented_Expression_ParameterUseConstant(exp,exp.Arguments[0]));

View File

@ -253,6 +253,8 @@ namespace FreeSql.Firebird
var arg2 = getExp(exp.Arguments[0]); var arg2 = getExp(exp.Arguments[0]);
return $"({arg2} is null or {arg2} = '' or trim({arg2}) = '')"; return $"({arg2} is null or {arg2} = '' or trim({arg2}) = '')";
case "Concat": case "Concat":
if (exp.Arguments.Count == 1 && exp.Arguments[0].NodeType == ExpressionType.NewArrayInit && exp.Arguments[0] is NewArrayExpression concatNewArrExp)
return _common.StringConcat(concatNewArrExp.Expressions.Select(a => getExp(a)).ToArray(), null);
return _common.StringConcat(exp.Arguments.Select(a => getExp(a)).ToArray(), null); return _common.StringConcat(exp.Arguments.Select(a => getExp(a)).ToArray(), null);
case "Format": case "Format":
if (exp.Arguments[0].NodeType != ExpressionType.Constant) throw new Exception(CoreStrings.Not_Implemented_Expression_ParameterUseConstant(exp,exp.Arguments[0])); if (exp.Arguments[0].NodeType != ExpressionType.Constant) throw new Exception(CoreStrings.Not_Implemented_Expression_ParameterUseConstant(exp,exp.Arguments[0]));

View File

@ -253,6 +253,8 @@ namespace FreeSql.GBase
var arg2 = getExp(exp.Arguments[0]); var arg2 = getExp(exp.Arguments[0]);
return $"({arg2} is null or {arg2} = '' or trim({arg2}) = '')"; return $"({arg2} is null or {arg2} = '' or trim({arg2}) = '')";
case "Concat": case "Concat":
if (exp.Arguments.Count == 1 && exp.Arguments[0].NodeType == ExpressionType.NewArrayInit && exp.Arguments[0] is NewArrayExpression concatNewArrExp)
return _common.StringConcat(concatNewArrExp.Expressions.Select(a => getExp(a)).ToArray(), null);
return _common.StringConcat(exp.Arguments.Select(a => getExp(a)).ToArray(), null); return _common.StringConcat(exp.Arguments.Select(a => getExp(a)).ToArray(), null);
case "Format": case "Format":
if (exp.Arguments[0].NodeType != ExpressionType.Constant) throw new Exception(CoreStrings.Not_Implemented_Expression_ParameterUseConstant(exp,exp.Arguments[0])); if (exp.Arguments[0].NodeType != ExpressionType.Constant) throw new Exception(CoreStrings.Not_Implemented_Expression_ParameterUseConstant(exp,exp.Arguments[0]));

View File

@ -328,6 +328,8 @@ namespace FreeSql.KingbaseES
var arg2 = getExp(exp.Arguments[0]); var arg2 = getExp(exp.Arguments[0]);
return $"({arg2} is null or {arg2} = '' or ltrim({arg2}) = '')"; return $"({arg2} is null or {arg2} = '' or ltrim({arg2}) = '')";
case "Concat": case "Concat":
if (exp.Arguments.Count == 1 && exp.Arguments[0].NodeType == ExpressionType.NewArrayInit && exp.Arguments[0] is NewArrayExpression concatNewArrExp)
return _common.StringConcat(concatNewArrExp.Expressions.Select(a => getExp(a)).ToArray(), null);
return _common.StringConcat(exp.Arguments.Select(a => getExp(a)).ToArray(), null); return _common.StringConcat(exp.Arguments.Select(a => getExp(a)).ToArray(), null);
case "Format": case "Format":
if (exp.Arguments[0].NodeType != ExpressionType.Constant) throw new Exception(CoreStrings.Not_Implemented_Expression_ParameterUseConstant(exp,exp.Arguments[0])); if (exp.Arguments[0].NodeType != ExpressionType.Constant) throw new Exception(CoreStrings.Not_Implemented_Expression_ParameterUseConstant(exp,exp.Arguments[0]));

View File

@ -236,6 +236,8 @@ namespace FreeSql.MsAccess
var arg2 = getExp(exp.Arguments[0]); var arg2 = getExp(exp.Arguments[0]);
return $"({arg2} is null or {arg2} = '' or ltrim({arg2}) = '')"; return $"({arg2} is null or {arg2} = '' or ltrim({arg2}) = '')";
case "Concat": case "Concat":
if (exp.Arguments.Count == 1 && exp.Arguments[0].NodeType == ExpressionType.NewArrayInit && exp.Arguments[0] is NewArrayExpression concatNewArrExp)
return _common.StringConcat(concatNewArrExp.Expressions.Select(a => getExp(a)).ToArray(), concatNewArrExp.Expressions.Select(a => a.Type).ToArray());
return _common.StringConcat(exp.Arguments.Select(a => getExp(a)).ToArray(), exp.Arguments.Select(a => a.Type).ToArray()); return _common.StringConcat(exp.Arguments.Select(a => getExp(a)).ToArray(), exp.Arguments.Select(a => a.Type).ToArray());
case "Format": case "Format":
if (exp.Arguments[0].NodeType != ExpressionType.Constant) throw new Exception(CoreStrings.Not_Implemented_Expression_ParameterUseConstant(exp,exp.Arguments[0])); if (exp.Arguments[0].NodeType != ExpressionType.Constant) throw new Exception(CoreStrings.Not_Implemented_Expression_ParameterUseConstant(exp,exp.Arguments[0]));

View File

@ -264,6 +264,8 @@ namespace FreeSql.MySql
var arg2 = getExp(exp.Arguments[0]); var arg2 = getExp(exp.Arguments[0]);
return $"({arg2} is null or {arg2} = '' or ltrim({arg2}) = '')"; return $"({arg2} is null or {arg2} = '' or ltrim({arg2}) = '')";
case "Concat": case "Concat":
if (exp.Arguments.Count == 1 && exp.Arguments[0].NodeType == ExpressionType.NewArrayInit && exp.Arguments[0] is NewArrayExpression concatNewArrExp)
return _common.StringConcat(concatNewArrExp.Expressions.Select(a => getExp(a)).ToArray(), null);
return _common.StringConcat(exp.Arguments.Select(a => getExp(a)).ToArray(), null); return _common.StringConcat(exp.Arguments.Select(a => getExp(a)).ToArray(), null);
case "Format": case "Format":
if (exp.Arguments[0].NodeType != ExpressionType.Constant) throw new Exception(CoreStrings.Not_Implemented_Expression_ParameterUseConstant(exp,exp.Arguments[0])); if (exp.Arguments[0].NodeType != ExpressionType.Constant) throw new Exception(CoreStrings.Not_Implemented_Expression_ParameterUseConstant(exp,exp.Arguments[0]));

View File

@ -266,6 +266,8 @@ namespace FreeSql.Odbc.Dameng
var arg2 = getExp(exp.Arguments[0]); var arg2 = getExp(exp.Arguments[0]);
return $"({arg2} is null or {arg2} = '' or ltrim({arg2}) = '')"; return $"({arg2} is null or {arg2} = '' or ltrim({arg2}) = '')";
case "Concat": case "Concat":
if (exp.Arguments.Count == 1 && exp.Arguments[0].NodeType == ExpressionType.NewArrayInit && exp.Arguments[0] is NewArrayExpression concatNewArrExp)
return _common.StringConcat(concatNewArrExp.Expressions.Select(a => getExp(a)).ToArray(), null);
return _common.StringConcat(exp.Arguments.Select(a => getExp(a)).ToArray(), null); return _common.StringConcat(exp.Arguments.Select(a => getExp(a)).ToArray(), null);
case "Format": case "Format":
if (exp.Arguments[0].NodeType != ExpressionType.Constant) throw new Exception(CoreStrings.Not_Implemented_Expression_ParameterUseConstant(exp,exp.Arguments[0])); if (exp.Arguments[0].NodeType != ExpressionType.Constant) throw new Exception(CoreStrings.Not_Implemented_Expression_ParameterUseConstant(exp,exp.Arguments[0]));

View File

@ -262,7 +262,10 @@ namespace FreeSql.Odbc.Default
{ {
case "IsNullOrEmpty": return _utils.Adapter.LambdaString_IsNullOrEmpty(getExp(exp.Arguments[0])); case "IsNullOrEmpty": return _utils.Adapter.LambdaString_IsNullOrEmpty(getExp(exp.Arguments[0]));
case "IsNullOrWhiteSpace": return _utils.Adapter.LambdaString_IsNullOrWhiteSpace(getExp(exp.Arguments[0])); case "IsNullOrWhiteSpace": return _utils.Adapter.LambdaString_IsNullOrWhiteSpace(getExp(exp.Arguments[0]));
case "Concat": return _common.StringConcat(exp.Arguments.Select(a => getExp(a)).ToArray(), exp.Arguments.Select(a => a.Type).ToArray()); case "Concat":
if (exp.Arguments.Count == 1 && exp.Arguments[0].NodeType == ExpressionType.NewArrayInit && exp.Arguments[0] is NewArrayExpression concatNewArrExp)
return _common.StringConcat(concatNewArrExp.Expressions.Select(a => getExp(a)).ToArray(), concatNewArrExp.Expressions.Select(a => a.Type).ToArray());
return _common.StringConcat(exp.Arguments.Select(a => getExp(a)).ToArray(), exp.Arguments.Select(a => a.Type).ToArray());
} }
} }
else else

View File

@ -328,6 +328,8 @@ namespace FreeSql.Odbc.KingbaseES
var arg2 = getExp(exp.Arguments[0]); var arg2 = getExp(exp.Arguments[0]);
return $"({arg2} is null or {arg2} = '' or ltrim({arg2}) = '')"; return $"({arg2} is null or {arg2} = '' or ltrim({arg2}) = '')";
case "Concat": case "Concat":
if (exp.Arguments.Count == 1 && exp.Arguments[0].NodeType == ExpressionType.NewArrayInit && exp.Arguments[0] is NewArrayExpression concatNewArrExp)
return _common.StringConcat(concatNewArrExp.Expressions.Select(a => getExp(a)).ToArray(), null);
return _common.StringConcat(exp.Arguments.Select(a => getExp(a)).ToArray(), null); return _common.StringConcat(exp.Arguments.Select(a => getExp(a)).ToArray(), null);
case "Format": case "Format":
if (exp.Arguments[0].NodeType != ExpressionType.Constant) throw new Exception(CoreStrings.Not_Implemented_Expression_ParameterUseConstant(exp,exp.Arguments[0])); if (exp.Arguments[0].NodeType != ExpressionType.Constant) throw new Exception(CoreStrings.Not_Implemented_Expression_ParameterUseConstant(exp,exp.Arguments[0]));

View File

@ -262,6 +262,8 @@ namespace FreeSql.Odbc.MySql
var arg2 = getExp(exp.Arguments[0]); var arg2 = getExp(exp.Arguments[0]);
return $"({arg2} is null or {arg2} = '' or ltrim({arg2}) = '')"; return $"({arg2} is null or {arg2} = '' or ltrim({arg2}) = '')";
case "Concat": case "Concat":
if (exp.Arguments.Count == 1 && exp.Arguments[0].NodeType == ExpressionType.NewArrayInit && exp.Arguments[0] is NewArrayExpression concatNewArrExp)
return _common.StringConcat(concatNewArrExp.Expressions.Select(a => getExp(a)).ToArray(), null);
return _common.StringConcat(exp.Arguments.Select(a => getExp(a)).ToArray(), null); return _common.StringConcat(exp.Arguments.Select(a => getExp(a)).ToArray(), null);
case "Format": case "Format":
if (exp.Arguments[0].NodeType != ExpressionType.Constant) throw new Exception(CoreStrings.Not_Implemented_Expression_ParameterUseConstant(exp,exp.Arguments[0])); if (exp.Arguments[0].NodeType != ExpressionType.Constant) throw new Exception(CoreStrings.Not_Implemented_Expression_ParameterUseConstant(exp,exp.Arguments[0]));

View File

@ -266,6 +266,8 @@ namespace FreeSql.Odbc.Oracle
var arg2 = getExp(exp.Arguments[0]); var arg2 = getExp(exp.Arguments[0]);
return $"({arg2} is null or {arg2} = '' or ltrim({arg2}) = '')"; return $"({arg2} is null or {arg2} = '' or ltrim({arg2}) = '')";
case "Concat": case "Concat":
if (exp.Arguments.Count == 1 && exp.Arguments[0].NodeType == ExpressionType.NewArrayInit && exp.Arguments[0] is NewArrayExpression concatNewArrExp)
return _common.StringConcat(concatNewArrExp.Expressions.Select(a => getExp(a)).ToArray(), null);
return _common.StringConcat(exp.Arguments.Select(a => getExp(a)).ToArray(), null); return _common.StringConcat(exp.Arguments.Select(a => getExp(a)).ToArray(), null);
case "Format": case "Format":
if (exp.Arguments[0].NodeType != ExpressionType.Constant) throw new Exception(CoreStrings.Not_Implemented_Expression_ParameterUseConstant(exp,exp.Arguments[0])); if (exp.Arguments[0].NodeType != ExpressionType.Constant) throw new Exception(CoreStrings.Not_Implemented_Expression_ParameterUseConstant(exp,exp.Arguments[0]));

View File

@ -350,6 +350,8 @@ namespace FreeSql.Odbc.PostgreSQL
var arg2 = getExp(exp.Arguments[0]); var arg2 = getExp(exp.Arguments[0]);
return $"({arg2} is null or {arg2} = '' or ltrim({arg2}) = '')"; return $"({arg2} is null or {arg2} = '' or ltrim({arg2}) = '')";
case "Concat": case "Concat":
if (exp.Arguments.Count == 1 && exp.Arguments[0].NodeType == ExpressionType.NewArrayInit && exp.Arguments[0] is NewArrayExpression concatNewArrExp)
return _common.StringConcat(concatNewArrExp.Expressions.Select(a => getExp(a)).ToArray(), null);
return _common.StringConcat(exp.Arguments.Select(a => getExp(a)).ToArray(), null); return _common.StringConcat(exp.Arguments.Select(a => getExp(a)).ToArray(), null);
case "Format": case "Format":
if (exp.Arguments[0].NodeType != ExpressionType.Constant) throw new Exception(CoreStrings.Not_Implemented_Expression_ParameterUseConstant(exp,exp.Arguments[0])); if (exp.Arguments[0].NodeType != ExpressionType.Constant) throw new Exception(CoreStrings.Not_Implemented_Expression_ParameterUseConstant(exp,exp.Arguments[0]));

View File

@ -272,6 +272,8 @@ namespace FreeSql.Odbc.SqlServer
var arg2 = getExp(exp.Arguments[0]); var arg2 = getExp(exp.Arguments[0]);
return $"({arg2} is null or {arg2} = '' or ltrim({arg2}) = '')"; return $"({arg2} is null or {arg2} = '' or ltrim({arg2}) = '')";
case "Concat": case "Concat":
if (exp.Arguments.Count == 1 && exp.Arguments[0].NodeType == ExpressionType.NewArrayInit && exp.Arguments[0] is NewArrayExpression concatNewArrExp)
return _common.StringConcat(concatNewArrExp.Expressions.Select(a => getExp(a)).ToArray(), concatNewArrExp.Expressions.Select(a => a.Type).ToArray());
return _common.StringConcat(exp.Arguments.Select(a => getExp(a)).ToArray(), exp.Arguments.Select(a => a.Type).ToArray()); return _common.StringConcat(exp.Arguments.Select(a => getExp(a)).ToArray(), exp.Arguments.Select(a => a.Type).ToArray());
case "Format": case "Format":
if (exp.Arguments[0].NodeType != ExpressionType.Constant) throw new Exception(CoreStrings.Not_Implemented_Expression_ParameterUseConstant(exp,exp.Arguments[0])); if (exp.Arguments[0].NodeType != ExpressionType.Constant) throw new Exception(CoreStrings.Not_Implemented_Expression_ParameterUseConstant(exp,exp.Arguments[0]));

View File

@ -266,6 +266,8 @@ namespace FreeSql.Oracle
var arg2 = getExp(exp.Arguments[0]); var arg2 = getExp(exp.Arguments[0]);
return $"({arg2} is null or {arg2} = '' or ltrim({arg2}) = '')"; return $"({arg2} is null or {arg2} = '' or ltrim({arg2}) = '')";
case "Concat": case "Concat":
if (exp.Arguments.Count == 1 && exp.Arguments[0].NodeType == ExpressionType.NewArrayInit && exp.Arguments[0] is NewArrayExpression concatNewArrExp)
return _common.StringConcat(concatNewArrExp.Expressions.Select(a => getExp(a)).ToArray(), null);
return _common.StringConcat(exp.Arguments.Select(a => getExp(a)).ToArray(), null); return _common.StringConcat(exp.Arguments.Select(a => getExp(a)).ToArray(), null);
case "Format": case "Format":
if (exp.Arguments[0].NodeType != ExpressionType.Constant) throw new Exception(CoreStrings.Not_Implemented_Expression_ParameterUseConstant(exp,exp.Arguments[0])); if (exp.Arguments[0].NodeType != ExpressionType.Constant) throw new Exception(CoreStrings.Not_Implemented_Expression_ParameterUseConstant(exp,exp.Arguments[0]));

View File

@ -381,6 +381,8 @@ namespace FreeSql.PostgreSQL
var arg2 = getExp(exp.Arguments[0]); var arg2 = getExp(exp.Arguments[0]);
return $"({arg2} is null or {arg2} = '' or ltrim({arg2}) = '')"; return $"({arg2} is null or {arg2} = '' or ltrim({arg2}) = '')";
case "Concat": case "Concat":
if (exp.Arguments.Count == 1 && exp.Arguments[0].NodeType == ExpressionType.NewArrayInit && exp.Arguments[0] is NewArrayExpression concatNewArrExp)
return _common.StringConcat(concatNewArrExp.Expressions.Select(a => getExp(a)).ToArray(), null);
return _common.StringConcat(exp.Arguments.Select(a => getExp(a)).ToArray(), null); return _common.StringConcat(exp.Arguments.Select(a => getExp(a)).ToArray(), null);
case "Format": case "Format":
if (exp.Arguments[0].NodeType != ExpressionType.Constant) throw new Exception(CoreStrings.Not_Implemented_Expression_ParameterUseConstant(exp,exp.Arguments[0])); if (exp.Arguments[0].NodeType != ExpressionType.Constant) throw new Exception(CoreStrings.Not_Implemented_Expression_ParameterUseConstant(exp,exp.Arguments[0]));

View File

@ -433,6 +433,8 @@ namespace FreeSql.QuestDb
var arg2 = getExp(exp.Arguments[0]); var arg2 = getExp(exp.Arguments[0]);
return $"({arg2} is null or {arg2} = '' or ltrim({arg2}) = '')"; return $"({arg2} is null or {arg2} = '' or ltrim({arg2}) = '')";
case "Concat": case "Concat":
if (exp.Arguments.Count == 1 && exp.Arguments[0].NodeType == ExpressionType.NewArrayInit && exp.Arguments[0] is NewArrayExpression concatNewArrExp)
return _common.StringConcat(concatNewArrExp.Expressions.Select(a => getExp(a)).ToArray(), null);
return _common.StringConcat(exp.Arguments.Select(a => getExp(a)).ToArray(), null); return _common.StringConcat(exp.Arguments.Select(a => getExp(a)).ToArray(), null);
case "Format": case "Format":
if (exp.Arguments[0].NodeType != ExpressionType.Constant) if (exp.Arguments[0].NodeType != ExpressionType.Constant)

View File

@ -310,6 +310,8 @@ namespace FreeSql.ShenTong
var arg2 = getExp(exp.Arguments[0]); var arg2 = getExp(exp.Arguments[0]);
return $"({arg2} is null or {arg2} = '' or ltrim({arg2}) = '')"; return $"({arg2} is null or {arg2} = '' or ltrim({arg2}) = '')";
case "Concat": case "Concat":
if (exp.Arguments.Count == 1 && exp.Arguments[0].NodeType == ExpressionType.NewArrayInit && exp.Arguments[0] is NewArrayExpression concatNewArrExp)
return _common.StringConcat(concatNewArrExp.Expressions.Select(a => getExp(a)).ToArray(), null);
return _common.StringConcat(exp.Arguments.Select(a => getExp(a)).ToArray(), null); return _common.StringConcat(exp.Arguments.Select(a => getExp(a)).ToArray(), null);
case "Format": case "Format":
if (exp.Arguments[0].NodeType != ExpressionType.Constant) throw new Exception(CoreStrings.Not_Implemented_Expression_ParameterUseConstant(exp,exp.Arguments[0])); if (exp.Arguments[0].NodeType != ExpressionType.Constant) throw new Exception(CoreStrings.Not_Implemented_Expression_ParameterUseConstant(exp,exp.Arguments[0]));

View File

@ -271,6 +271,8 @@ namespace FreeSql.SqlServer
var arg2 = getExp(exp.Arguments[0]); var arg2 = getExp(exp.Arguments[0]);
return $"({arg2} is null or {arg2} = '' or ltrim({arg2}) = '')"; return $"({arg2} is null or {arg2} = '' or ltrim({arg2}) = '')";
case "Concat": case "Concat":
if (exp.Arguments.Count == 1 && exp.Arguments[0].NodeType == ExpressionType.NewArrayInit && exp.Arguments[0] is NewArrayExpression concatNewArrExp)
return _common.StringConcat(concatNewArrExp.Expressions.Select(a => getExp(a)).ToArray(), concatNewArrExp.Expressions.Select(a => a.Type).ToArray());
return _common.StringConcat(exp.Arguments.Select(a => getExp(a)).ToArray(), exp.Arguments.Select(a => a.Type).ToArray()); return _common.StringConcat(exp.Arguments.Select(a => getExp(a)).ToArray(), exp.Arguments.Select(a => a.Type).ToArray());
case "Format": case "Format":
if (exp.Arguments[0].NodeType != ExpressionType.Constant) throw new Exception(CoreStrings.Not_Implemented_Expression_ParameterUseConstant(exp,exp.Arguments[0])); if (exp.Arguments[0].NodeType != ExpressionType.Constant) throw new Exception(CoreStrings.Not_Implemented_Expression_ParameterUseConstant(exp,exp.Arguments[0]));

View File

@ -262,6 +262,8 @@ namespace FreeSql.Sqlite
var arg2 = getExp(exp.Arguments[0]); var arg2 = getExp(exp.Arguments[0]);
return $"({arg2} is null or {arg2} = '' or ltrim({arg2}) = '')"; return $"({arg2} is null or {arg2} = '' or ltrim({arg2}) = '')";
case "Concat": case "Concat":
if (exp.Arguments.Count == 1 && exp.Arguments[0].NodeType == ExpressionType.NewArrayInit && exp.Arguments[0] is NewArrayExpression concatNewArrExp)
return _common.StringConcat(concatNewArrExp.Expressions.Select(a => getExp(a)).ToArray(), null);
return _common.StringConcat(exp.Arguments.Select(a => getExp(a)).ToArray(), null); return _common.StringConcat(exp.Arguments.Select(a => getExp(a)).ToArray(), null);
case "Format": case "Format":
if (exp.Arguments[0].NodeType != ExpressionType.Constant) throw new Exception(CoreStrings.Not_Implemented_Expression_ParameterUseConstant(exp,exp.Arguments[0])); if (exp.Arguments[0].NodeType != ExpressionType.Constant) throw new Exception(CoreStrings.Not_Implemented_Expression_ParameterUseConstant(exp,exp.Arguments[0]));