Skip to content
This repository was archived by the owner on Dec 24, 2022. It is now read-only.

Commit 64fe097

Browse files
committed
Add support for auto aliasing of anon type properties assigned by Sql.*
1 parent 93e32b2 commit 64fe097

File tree

2 files changed

+25
-0
lines changed

2 files changed

+25
-0
lines changed

src/ServiceStack.OrmLite/Expressions/SqlExpression.cs

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1598,6 +1598,12 @@ private object SetAnonTypePropertyNamesForSelectExpression(object expr, Expressi
15981598
}
15991599
}
16001600

1601+
var methodCallExpr = arg as MethodCallExpression;
1602+
var mi = methodCallExpr != null ? methodCallExpr.Method : null;
1603+
var declareType = mi != null && mi.DeclaringType != null ? mi.DeclaringType : null;
1604+
if (declareType != null && declareType.Name == "Sql" && mi.Name != "Desc" && mi.Name != "Asc" && mi.Name != "As")
1605+
return new PartialSqlString(expr + " AS " + member.Name); // new { Count = Sql.Count("*") }
1606+
16011607
return expr;
16021608
}
16031609

tests/ServiceStack.OrmLite.Tests/UseCase/ArtistTrackSqlExpressions.cs

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,5 +25,24 @@ public void Can_OrderBy_Column_Index()
2525
Assert.That(result[1993], Is.EqualTo(2));
2626
}
2727
}
28+
29+
[Test]
30+
public void Can_Order_by_Property_Alias()
31+
{
32+
using (var db = CreateArtistAndTrackTablesWithData(OpenDbConnection()))
33+
{
34+
var q = db.From<Track>()
35+
.Where(x => x.Year > 1991)
36+
.And(x => x.Name.Contains("A"))
37+
.GroupBy(x => x.Year)
38+
.OrderByDescending("Count")
39+
.ThenBy(x => x.Year)
40+
.Take(1)
41+
.Select(x => new { x.Year, Count = Sql.Count("*") });
42+
43+
var result = db.Dictionary<int, int>(q);
44+
Assert.That(result[1993], Is.EqualTo(2));
45+
}
46+
}
2847
}
2948
}

0 commit comments

Comments
 (0)