5.0.2.7 BUG Partiton&Union

This commit is contained in:
SUNKAIXUAN 2021-03-24 12:39:11 +08:00
parent 79d4893a48
commit a01e35ffb4
5 changed files with 9 additions and 3 deletions

View File

@ -45,8 +45,11 @@ namespace OrmTest
var getDicionary = db.Queryable<Order>().ToDictionary(it => it.Id, it => it.Name);
var getDicionaryList = db.Queryable<Order>().ToDictionaryList();
var getTest = db.Queryable<Order>().Where(it =>string.IsNullOrWhiteSpace( it.Name)).ToList();
var test01 = db.Queryable<Order>().PartitionBy(it => it.Id).ToList();
var q1 = db.Queryable<Order>().Take(1);
var q2 = db.Queryable<Order>().Take(2);
var test02 = db.Union(q1, q2).ToList();
var test03 = db.Queryable<Order>().Take(1).ToList();
Console.WriteLine("#### Examples End ####");
}

View File

@ -622,6 +622,7 @@ namespace SqlSugar
if (QueryBuilder.Take == null)
QueryBuilder.Take = 1;
_PartitionBy(expression);
QueryBuilder.DisableTop = true;
return this;
}
public virtual ISugarQueryable<T> PartitionBy(string groupFileds)

View File

@ -40,6 +40,7 @@ namespace SqlSugar
public int ExternalPageIndex { get; set; }
public int ExternalPageSize { get; set; }
public int? Take { get; set; }
public bool DisableTop { get; set; }
public string OrderByValue { get; set; }
public object SelectValue { get; set; }
public string SelectCacheKey { get; set; }

View File

@ -544,6 +544,7 @@ namespace SqlSugar
List<KeyValuePair<string, List<SugarParameter>>> allItems = new List<KeyValuePair<string, List<SugarParameter>>>();
foreach (var item in queryables)
{
item.QueryBuilder.DisableTop = true;
var sqlObj = item.ToSql();
string sql = sqlObj.Key;
UtilMethods.RepairReplicationParameters(ref sql, sqlObj.Value.ToArray(), i, "Union");

View File

@ -28,7 +28,7 @@ namespace SqlSugar
{
this.OrderByValue = this.PartitionByValue + this.OrderByValue;
}
var isFirst = (Skip == 0 || Skip == null) && Take == 1;
var isFirst = (Skip == 0 || Skip == null) && Take == 1&&DisableTop==false;
var isRowNumber = (Skip != null || Take != null) && !isFirst;
var rowNumberString = string.Format(",ROW_NUMBER() OVER({0}) AS RowIndex ", GetOrderByString);
string groupByValue = GetGroupByString + HavingInfos;