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>
|
||||
</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)">
|
||||
<summary>
|
||||
添加
|
||||
@ -520,5 +527,14 @@
|
||||
<param name="that"></param>
|
||||
<returns></returns>
|
||||
</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>
|
||||
</doc>
|
||||
|
@ -224,11 +224,13 @@ namespace FreeSql.Tests
|
||||
|
||||
.Page(1, 10).ToSql("Id");
|
||||
|
||||
var sqlextMax1 = g.mysql.Select<EdiItem>()
|
||||
var sqlextMax1 = g.sqlserver.Select<EdiItem>()
|
||||
.GroupBy(a => a.Id)
|
||||
.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>()
|
||||
|
@ -2,6 +2,7 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Linq.Expressions;
|
||||
using System.Text;
|
||||
using System.Threading;
|
||||
using static FreeSql.SqlExtExtensions;
|
||||
@ -157,7 +158,19 @@ namespace FreeSql
|
||||
}
|
||||
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;
|
||||
}
|
||||
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 ");
|
||||
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"]);
|
||||
if (isDesc) sb.Append(" desc");
|
||||
sb.Append(",");
|
||||
}
|
||||
return that;
|
||||
}
|
||||
public static TValue ToValue<TValue>(this ISqlOver<TValue> that)
|
||||
@ -254,9 +281,23 @@ namespace FreeSql
|
||||
sb.Append(" order by ");
|
||||
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"]);
|
||||
if (isDesc) sb.Append(" desc");
|
||||
sb.Append(",");
|
||||
}
|
||||
return that;
|
||||
}
|
||||
public static string ToValue(this IGroupConcat that)
|
||||
|
Loading…
x
Reference in New Issue
Block a user