mirror of
https://github.com/nsnail/FreeSql.git
synced 2025-04-22 18:52:50 +08:00
- 修改 SqlExt PartitionBy 无法传入多列的问题;
This commit is contained in:
parent
66f123fbed
commit
d3c4bbb879
@ -130,6 +130,13 @@
|
|||||||
清空状态数据
|
清空状态数据
|
||||||
</summary>
|
</summary>
|
||||||
</member>
|
</member>
|
||||||
|
<member name="M:FreeSql.DbSet`1.RemoveAsync(System.Linq.Expressions.Expression{System.Func{`0,System.Boolean}})">
|
||||||
|
<summary>
|
||||||
|
根据 lambda 条件删除数据
|
||||||
|
</summary>
|
||||||
|
<param name="predicate"></param>
|
||||||
|
<returns></returns>
|
||||||
|
</member>
|
||||||
<member name="M:FreeSql.DbSet`1.Add(`0)">
|
<member name="M:FreeSql.DbSet`1.Add(`0)">
|
||||||
<summary>
|
<summary>
|
||||||
添加
|
添加
|
||||||
@ -520,5 +527,14 @@
|
|||||||
<param name="that"></param>
|
<param name="that"></param>
|
||||||
<returns></returns>
|
<returns></returns>
|
||||||
</member>
|
</member>
|
||||||
|
<member name="M:Microsoft.Extensions.DependencyInjection.FreeSqlRepositoryDependencyInjection.AddFreeRepository(Microsoft.Extensions.DependencyInjection.IServiceCollection,System.Action{FreeSql.FluentDataFilter},System.Reflection.Assembly[])">
|
||||||
|
<summary>
|
||||||
|
批量注入 Repository,可以参考代码自行调整
|
||||||
|
</summary>
|
||||||
|
<param name="services"></param>
|
||||||
|
<param name="globalDataFilter"></param>
|
||||||
|
<param name="assemblies"></param>
|
||||||
|
<returns></returns>
|
||||||
|
</member>
|
||||||
</members>
|
</members>
|
||||||
</doc>
|
</doc>
|
||||||
|
@ -224,11 +224,13 @@ namespace FreeSql.Tests
|
|||||||
|
|
||||||
.Page(1, 10).ToSql("Id");
|
.Page(1, 10).ToSql("Id");
|
||||||
|
|
||||||
var sqlextMax1 = g.mysql.Select<EdiItem>()
|
var sqlextMax1 = g.sqlserver.Select<EdiItem>()
|
||||||
.GroupBy(a => a.Id)
|
.GroupBy(a => a.Id)
|
||||||
.ToSql(a => new
|
.ToSql(a => new
|
||||||
{
|
{
|
||||||
Id = a.Key, EdiId = SqlExt.Max(a.Key).Over().ToValue()
|
Id = a.Key,
|
||||||
|
EdiId1 = SqlExt.Max(a.Key).Over().PartitionBy(new { a.Value.EdiId, a.Value.Id }).OrderByDescending(new { a.Value.EdiId, a.Value.Id }).ToValue(),
|
||||||
|
EdiId2 = SqlExt.Max(a.Key).Over().PartitionBy(a.Value.EdiId).OrderByDescending(a.Value.Id).ToValue(),
|
||||||
});
|
});
|
||||||
|
|
||||||
var sqlextGroupConcat = g.mysql.Select<Edi, EdiItem>()
|
var sqlextGroupConcat = g.mysql.Select<Edi, EdiItem>()
|
||||||
|
@ -2,6 +2,7 @@
|
|||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
|
using System.Linq.Expressions;
|
||||||
using System.Text;
|
using System.Text;
|
||||||
using System.Threading;
|
using System.Threading;
|
||||||
using static FreeSql.SqlExtExtensions;
|
using static FreeSql.SqlExtExtensions;
|
||||||
@ -157,7 +158,19 @@ namespace FreeSql
|
|||||||
}
|
}
|
||||||
public static ISqlOver<TValue> PartitionBy<TValue>(this ISqlOver<TValue> that, object column)
|
public static ISqlOver<TValue> PartitionBy<TValue>(this ISqlOver<TValue> that, object column)
|
||||||
{
|
{
|
||||||
expSbLast.Sb.Append(" partition by ").Append(expContext.ParsedContent["column"]).Append(",");
|
var sb = expSbLast.Sb;
|
||||||
|
sb.Append(" partition by ");
|
||||||
|
var exp = expContext.RawExpression["column"];
|
||||||
|
if (exp.NodeType == ExpressionType.New)
|
||||||
|
{
|
||||||
|
var expNew = exp as NewExpression;
|
||||||
|
for (var a = 0; a < expNew.Arguments.Count; a++)
|
||||||
|
{
|
||||||
|
if (a > 0) sb.Append(",");
|
||||||
|
sb.Append(expContext.Utility.ParseExpression(expNew.Arguments[a]));
|
||||||
|
}
|
||||||
|
} else
|
||||||
|
sb.Append(expContext.ParsedContent["column"]);
|
||||||
return that;
|
return that;
|
||||||
}
|
}
|
||||||
public static ISqlOver<TValue> OrderBy<TValue>(this ISqlOver<TValue> that, object column) => OrderByPriv(that, false);
|
public static ISqlOver<TValue> OrderBy<TValue>(this ISqlOver<TValue> that, object column) => OrderByPriv(that, false);
|
||||||
@ -170,9 +183,23 @@ namespace FreeSql
|
|||||||
sb.Append(" order by ");
|
sb.Append(" order by ");
|
||||||
expSbLast.IsOrderBy = true;
|
expSbLast.IsOrderBy = true;
|
||||||
}
|
}
|
||||||
|
var exp = expContext.RawExpression["column"];
|
||||||
|
if (exp.NodeType == ExpressionType.New)
|
||||||
|
{
|
||||||
|
var expNew = exp as NewExpression;
|
||||||
|
for (var a = 0; a < expNew.Arguments.Count; a++)
|
||||||
|
{
|
||||||
|
sb.Append(expContext.Utility.ParseExpression(expNew.Arguments[a]));
|
||||||
|
if (isDesc) sb.Append(" desc");
|
||||||
|
sb.Append(",");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
sb.Append(expContext.ParsedContent["column"]);
|
sb.Append(expContext.ParsedContent["column"]);
|
||||||
if (isDesc) sb.Append(" desc");
|
if (isDesc) sb.Append(" desc");
|
||||||
sb.Append(",");
|
sb.Append(",");
|
||||||
|
}
|
||||||
return that;
|
return that;
|
||||||
}
|
}
|
||||||
public static TValue ToValue<TValue>(this ISqlOver<TValue> that)
|
public static TValue ToValue<TValue>(this ISqlOver<TValue> that)
|
||||||
@ -254,9 +281,23 @@ namespace FreeSql
|
|||||||
sb.Append(" order by ");
|
sb.Append(" order by ");
|
||||||
expSbLast.IsOrderBy = true;
|
expSbLast.IsOrderBy = true;
|
||||||
}
|
}
|
||||||
|
var exp = expContext.RawExpression["column"];
|
||||||
|
if (exp.NodeType == ExpressionType.New)
|
||||||
|
{
|
||||||
|
var expNew = exp as NewExpression;
|
||||||
|
for (var a = 0; a < expNew.Arguments.Count; a++)
|
||||||
|
{
|
||||||
|
sb.Append(expContext.Utility.ParseExpression(expNew.Arguments[a]));
|
||||||
|
if (isDesc) sb.Append(" desc");
|
||||||
|
sb.Append(",");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
sb.Append(expContext.ParsedContent["column"]);
|
sb.Append(expContext.ParsedContent["column"]);
|
||||||
if (isDesc) sb.Append(" desc");
|
if (isDesc) sb.Append(" desc");
|
||||||
sb.Append(",");
|
sb.Append(",");
|
||||||
|
}
|
||||||
return that;
|
return that;
|
||||||
}
|
}
|
||||||
public static string ToValue(this IGroupConcat that)
|
public static string ToValue(this IGroupConcat that)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user