- 增加 lambda 表达式树解析子查询 ToList + string.Join() 产生 类似 group_concat 的效果(适配了 sqlserver/pgsql/oracle/mysql/sqlite/达梦/金仓) #405;

This commit is contained in:
28810
2020-08-08 16:18:10 +08:00
parent 1a8c7ce86d
commit b3ec6cdf8d
30 changed files with 614 additions and 17 deletions

View File

@ -52,6 +52,36 @@ namespace FreeSql.Tests.Odbc.MySqlExpression
list.Add(g.mysql.Select<TestEqualsGuid>().Where(a => a.IsDeleted.Equals(false)).ToList());
}
[Fact]
public void StringJoin()
{
var fsql = g.mysql;
fsql.Delete<StringJoin01>().Where("1=1").ExecuteAffrows();
fsql.Insert(new[] { new StringJoin01 { name = "<22><><EFBFBD><EFBFBD>" }, new StringJoin01 { name = "<22>Ϻ<EFBFBD>" }, new StringJoin01 { name = "<22><><EFBFBD><EFBFBD>" }, }).ExecuteAffrows();
var val1 = string.Join(",", fsql.Select<StringJoin01>().ToList(a => a.name));
var val2 = fsql.Select<StringJoin01>().ToList(a => string.Join(",", fsql.Select<StringJoin01>().As("b").ToList(b => b.name)));
Assert.Equal(val1, val2[0]);
val1 = string.Join("**", fsql.Select<StringJoin01>().ToList(a => a.name));
val2 = fsql.Select<StringJoin01>().ToList(a => string.Join("**", fsql.Select<StringJoin01>().As("b").ToList(b => b.name)));
Assert.Equal(val1, val2[0]);
val1 = string.Join(",", fsql.Select<StringJoin01>().ToList(a => a.id));
val2 = fsql.Select<StringJoin01>().ToList(a => string.Join(",", fsql.Select<StringJoin01>().As("b").ToList(b => b.id)));
Assert.Equal(val1, val2[0]);
val1 = string.Join("**", fsql.Select<StringJoin01>().ToList(a => a.id));
val2 = fsql.Select<StringJoin01>().ToList(a => string.Join("**", fsql.Select<StringJoin01>().As("b").ToList(b => b.id)));
Assert.Equal(val1, val2[0]);
}
class StringJoin01
{
[Column(IsIdentity = true)]
public int id { get; set; }
public string name { get; set; }
}
[Fact]
public void First()
{