mirror of
https://github.com/nsnail/FreeSql.git
synced 2025-06-18 20:08:15 +08:00
- 增加 ISelect.AsTreeCte() 递归查询树表(向下或向下);
This commit is contained in:
@ -1754,7 +1754,7 @@ WHERE (((to_char(a.""ID"")) in (SELECT b.""TITLE""
|
||||
Assert.Equal("110100", t3[0].Childs[0].Childs[0].Code);
|
||||
Assert.Equal("110101", t3[0].Childs[0].Childs[1].Code);
|
||||
|
||||
t3 = fsql.Select<VM_District_Child>().Where(a => a.Name == "中国").AsCteTree().OrderBy(a => a.Code).ToTreeList();
|
||||
t3 = fsql.Select<VM_District_Child>().Where(a => a.Name == "中国").AsTreeCte().OrderBy(a => a.Code).ToTreeList();
|
||||
Assert.Single(t3);
|
||||
Assert.Equal("100000", t3[0].Code);
|
||||
Assert.Single(t3[0].Childs);
|
||||
@ -1763,18 +1763,42 @@ WHERE (((to_char(a.""ID"")) in (SELECT b.""TITLE""
|
||||
Assert.Equal("110100", t3[0].Childs[0].Childs[0].Code);
|
||||
Assert.Equal("110101", t3[0].Childs[0].Childs[1].Code);
|
||||
|
||||
t3 = fsql.Select<VM_District_Child>().Where(a => a.Name == "中国").AsCteTree().OrderBy(a => a.Code).ToList();
|
||||
t3 = fsql.Select<VM_District_Child>().Where(a => a.Name == "中国").AsTreeCte().OrderBy(a => a.Code).ToList();
|
||||
Assert.Equal(4, t3.Count);
|
||||
Assert.Equal("100000", t3[0].Code);
|
||||
Assert.Equal("110000", t3[1].Code);
|
||||
Assert.Equal("110100", t3[2].Code);
|
||||
Assert.Equal("110101", t3[3].Code);
|
||||
|
||||
t3 = fsql.Select<VM_District_Child>().Where(a => a.Name == "北京").AsCteTree().OrderBy(a => a.Code).ToList();
|
||||
t3 = fsql.Select<VM_District_Child>().Where(a => a.Name == "北京").AsTreeCte().OrderBy(a => a.Code).ToList();
|
||||
Assert.Equal(3, t3.Count);
|
||||
Assert.Equal("110000", t3[0].Code);
|
||||
Assert.Equal("110100", t3[1].Code);
|
||||
Assert.Equal("110101", t3[2].Code);
|
||||
|
||||
var t4 = fsql.Select<VM_District_Child>().Where(a => a.Name == "中国").AsTreeCte(a => a.Name).OrderBy(a => a.Code)
|
||||
.ToList(a => new { item = a, level = Convert.ToInt32("a.cte_level"), path = "a.cte_path" });
|
||||
Assert.Equal(4, t4.Count);
|
||||
Assert.Equal("100000", t4[0].item.Code);
|
||||
Assert.Equal("110000", t4[1].item.Code);
|
||||
Assert.Equal("110100", t4[2].item.Code);
|
||||
Assert.Equal("110101", t4[3].item.Code);
|
||||
Assert.Equal("中国", t4[0].path);
|
||||
Assert.Equal("中国 -> 北京", t4[1].path);
|
||||
Assert.Equal("中国 -> 北京 -> 北京市", t4[2].path);
|
||||
Assert.Equal("中国 -> 北京 -> 东城区", t4[3].path);
|
||||
|
||||
t4 = fsql.Select<VM_District_Child>().Where(a => a.Name == "中国").AsTreeCte(a => a.Name + "[" + a.Code + "]").OrderBy(a => a.Code)
|
||||
.ToList(a => new { item = a, level = Convert.ToInt32("a.cte_level"), path = "a.cte_path" });
|
||||
Assert.Equal(4, t4.Count);
|
||||
Assert.Equal("100000", t4[0].item.Code);
|
||||
Assert.Equal("110000", t4[1].item.Code);
|
||||
Assert.Equal("110100", t4[2].item.Code);
|
||||
Assert.Equal("110101", t4[3].item.Code);
|
||||
Assert.Equal("中国[100000]", t4[0].path);
|
||||
Assert.Equal("中国[100000] -> 北京[110000]", t4[1].path);
|
||||
Assert.Equal("中国[100000] -> 北京[110000] -> 北京市[110100]", t4[2].path);
|
||||
Assert.Equal("中国[100000] -> 北京[110000] -> 东城区[110101]", t4[3].path);
|
||||
}
|
||||
|
||||
[Table(Name = "D_District")]
|
||||
|
Reference in New Issue
Block a user