- 优化 GroupBy ToList 中可以直接使用 a.Key;

This commit is contained in:
28810
2020-08-07 00:00:39 +08:00
parent dfac943495
commit 7efe02f69c
21 changed files with 109 additions and 62 deletions

View File

@ -866,7 +866,7 @@ namespace FreeSql.Tests.MySqlConnector
{
b.Key.Title,
b.Key.yyyy,
b.Key,
cou = b.Count(),
sum2 = b.Sum(b.Value.TypeGuid)
});

View File

@ -793,7 +793,7 @@ namespace FreeSql.Tests.Odbc.Dameng
{
b.Key.Title,
b.Key.yyyy,
b.Key,
cou = b.Count(),
sum2 = b.Sum(b.Value.TypeGuid)
});

View File

@ -784,7 +784,7 @@ namespace FreeSql.Tests.Odbc.Default
{
b.Key.Title,
b.Key.yyyy,
b.Key,
cou = b.Count(),
sum2 = b.Sum(b.Value.TypeGuid)
});

View File

@ -758,7 +758,7 @@ namespace FreeSql.Tests.Odbc.KingbaseES
{
b.Key.Title,
b.Key.yyyy,
b.Key,
cou = b.Count(),
sum2 = b.Sum(b.Value.TypeGuid)
});

View File

@ -877,7 +877,7 @@ namespace FreeSql.Tests.Odbc.MySql
{
b.Key.Title,
b.Key.yyyy,
b.Key,
cou = b.Count(),
sum2 = b.Sum(b.Value.TypeGuid)
});

View File

@ -794,7 +794,7 @@ namespace FreeSql.Tests.Odbc.Oracle
{
b.Key.Title,
b.Key.yyyy,
b.Key,
cou = b.Count(),
sum2 = b.Sum(b.Value.TypeGuid)
});

View File

@ -854,7 +854,7 @@ namespace FreeSql.Tests.Odbc.PostgreSQL
{
b.Key.Title,
b.Key.yyyy,
b.Key,
cou = b.Count(),
sum2 = b.Sum(b.Value.TypeGuid)
});

View File

@ -749,7 +749,7 @@ namespace FreeSql.Tests.Odbc.SqlServer
{
b.Key.Title,
b.Key.yyyy,
b.Key,
cou = b.Count(),
sum2 = b.Sum(b.Value.TypeGuid)
});

View File

@ -793,7 +793,7 @@ namespace FreeSql.Tests.Dameng
{
b.Key.Title,
b.Key.yyyy,
b.Key,
cou = b.Count(),
sum2 = b.Sum(b.Value.TypeGuid)
});

View File

@ -785,7 +785,7 @@ namespace FreeSql.Tests.MsAccess
{
b.Key.Title,
b.Key.yyyy,
b.Key,
cou = b.Count(),
sum2 = b.Sum(b.Value.TypeGuid)
});

View File

@ -913,7 +913,7 @@ namespace FreeSql.Tests.MySql
{
b.Key.Title,
b.Key.yyyy,
b.Key,
cou = b.Count(),
sum2 = b.Sum(b.Value.TypeGuid)
});

View File

@ -794,7 +794,7 @@ namespace FreeSql.Tests.Oracle
{
b.Key.Title,
b.Key.yyyy,
b.Key,
cou = b.Count(),
sum2 = b.Sum(b.Value.TypeGuid)
});

View File

@ -871,7 +871,7 @@ namespace FreeSql.Tests.PostgreSQL
{
b.Key.Title,
b.Key.yyyy,
b.Key,
cou = b.Count(),
sum2 = b.Sum(b.Value.TypeGuid)
});

View File

@ -871,7 +871,7 @@ namespace FreeSql.Tests.ShenTong
{
b.Key.Title,
b.Key.yyyy,
b.Key,
cou = b.Count(),
sum2 = b.Sum(b.Value.TypeGuid)
});

View File

@ -805,7 +805,7 @@ namespace FreeSql.Tests.SqlServer
{
b.Key.Title,
b.Key.yyyy,
b.Key,
cou = b.Count(),
sum2 = b.Sum(b.Value.TypeGuid)
});

View File

@ -759,7 +759,7 @@ namespace FreeSql.Tests.Sqlite
{
b.Key.Title,
b.Key.yyyy,
b.Key,
cou = b.Count(),
sum2 = b.Sum(b.Value.TypeGuid)
});

View File

@ -996,7 +996,7 @@ namespace FreeSql.Tests
{
b.Key.Title,
b.Key.yyyy,
b.Key,
cou = b.Count(),
sum = b.Sum(b.Key.yyyy),
sum2 = b.Sum(b.Value.TypeGuid)

View File

@ -179,6 +179,17 @@ namespace FreeSql.Tests
var aff2 = g.sqlite.Delete<Edi>(10086).ExecuteAffrows();
Assert.Equal(aff1, aff2);
g.sqlserver.Delete<Edi>().Where("1=1").ExecuteAffrows();
g.sqlserver.Delete<EdiItem>().Where("1=1").ExecuteAffrows();
g.sqlserver.Insert(new[] { new Edi { Id = 1 }, new Edi { Id = 2 }, new Edi { Id = 3 }, new Edi { Id = 4 }, new Edi { Id = 5 } }).ExecuteAffrows();
g.sqlserver.Insert(new[] {
new EdiItem { Id = 1, EdiId = 1 }, new EdiItem { Id = 2, EdiId = 1 }, new EdiItem { Id = 3, EdiId = 1 } ,
new EdiItem { Id = 4, EdiId = 2 }, new EdiItem { Id = 5, EdiId = 2 },
new EdiItem { Id = 6, EdiId = 3 }, new EdiItem { Id = 7, EdiId = 3 },
new EdiItem { Id = 8, EdiId = 4 }, new EdiItem { Id = 9, EdiId = 4 },
new EdiItem { Id = 10, EdiId = 5 }, new EdiItem { Id = 11, EdiId = 5 },
}).ExecuteAffrows();
var testStringFormat = g.sqlite.Select<Edi>().First(a => new {
str = $"x{a.Id}_{DateTime.Now.ToString("yyyyMM")}z",
@ -265,6 +276,22 @@ namespace FreeSql.Tests
over1 = SqlExt.Rank().Over().OrderBy(a.Id).OrderByDescending(b.EdiId).ToValue(),
});
var sqlextCaseGroupBy1 = g.sqlserver.Select<Edi, EdiItem>()
.InnerJoin((a, b) => b.Id == a.Id)
.GroupBy((a, b) => new { aid = a.Id, bid = b.Id })
.ToDictionary(a => new
{
sum = a.Sum(a.Value.Item2.EdiId)
});
var sqlextCaseGroupBy2 = g.sqlserver.Select<Edi, EdiItem>()
.InnerJoin((a, b) => b.Id == a.Id)
.GroupBy((a, b) => new { aid = a.Id, bid = b.Id })
.ToList(a => new
{
a.Key, sum = a.Sum(a.Value.Item2.EdiId)
});
var sqlextOver = g.sqlserver.Select<Edi, EdiItem>()
.InnerJoin((a, b) => b.Id == a.Id)