@@ -1472,14 +1472,16 @@ private object SetAnonTypePropertyNamesForSelectExpression(object expr, Expressi
1472
1472
1473
1473
MemberExpression propertyExpr ;
1474
1474
if ( ( propertyExpr = arg as MemberExpression ) != null && propertyExpr . Member . Name != member . Name )
1475
- return new SelectListExpression ( DialectProvider , expr . ToString ( ) , member . Name ) ;
1475
+ return new SelectItemExpression ( DialectProvider , expr . ToString ( ) , member . Name ) ;
1476
1476
1477
1477
// When selecting an entire table use the anon type property name as a prefix for the returned column name
1478
1478
// to allow the caller to distinguish properties with the same names from different tables
1479
1479
1480
- ParameterExpression paramExpr ;
1481
- SelectList selectList ;
1482
- if ( ( paramExpr = arg as ParameterExpression ) != null && paramExpr . Name != member . Name && ( selectList = expr as SelectList ) != null )
1480
+ var paramExpr = arg as ParameterExpression ;
1481
+ var selectList = paramExpr != null && paramExpr . Name != member . Name
1482
+ ? expr as SelectList
1483
+ : null ;
1484
+ if ( selectList != null )
1483
1485
{
1484
1486
foreach ( var item in selectList . Items )
1485
1487
{
@@ -1489,7 +1491,7 @@ private object SetAnonTypePropertyNamesForSelectExpression(object expr, Expressi
1489
1491
}
1490
1492
else
1491
1493
{
1492
- var columnItem = item as SelectListColumn ;
1494
+ var columnItem = item as SelectItemColumn ;
1493
1495
if ( columnItem != null )
1494
1496
{
1495
1497
columnItem . Alias = member . Name + columnItem . ColumnName ;
@@ -1501,11 +1503,26 @@ private object SetAnonTypePropertyNamesForSelectExpression(object expr, Expressi
1501
1503
return expr ;
1502
1504
}
1503
1505
1506
+ class SelectList
1507
+ {
1508
+ public readonly SelectItem [ ] Items ;
1509
+
1510
+ public SelectList ( SelectItem [ ] items )
1511
+ {
1512
+ this . Items = items ;
1513
+ }
1514
+
1515
+ public override string ToString ( )
1516
+ {
1517
+ return Items . ToSelectString ( ) ;
1518
+ }
1519
+ }
1520
+
1504
1521
protected virtual object VisitParameter ( ParameterExpression p )
1505
1522
{
1506
1523
var paramModelDef = p . Type . GetModelDefinition ( ) ;
1507
1524
if ( paramModelDef != null )
1508
- return DialectProvider . GetColumnNames ( paramModelDef , true ) ;
1525
+ return new SelectList ( DialectProvider . GetColumnNames ( paramModelDef , true ) ) ;
1509
1526
1510
1527
return p . Name ;
1511
1528
}
@@ -2103,9 +2120,9 @@ public EnumMemberAccess(string text, Type enumType)
2103
2120
public Type EnumType { get ; private set ; }
2104
2121
}
2105
2122
2106
- public abstract class SelectListItem
2123
+ public abstract class SelectItem
2107
2124
{
2108
- protected SelectListItem ( IOrmLiteDialectProvider dialectProvider , string alias )
2125
+ protected SelectItem ( IOrmLiteDialectProvider dialectProvider , string alias )
2109
2126
{
2110
2127
if ( dialectProvider == null )
2111
2128
throw new ArgumentNullException ( "dialectProvider" ) ;
@@ -2124,9 +2141,9 @@ protected SelectListItem(IOrmLiteDialectProvider dialectProvider, string alias)
2124
2141
public abstract override string ToString ( ) ;
2125
2142
}
2126
2143
2127
- public class SelectListExpression : SelectListItem
2144
+ public class SelectItemExpression : SelectItem
2128
2145
{
2129
- public SelectListExpression ( IOrmLiteDialectProvider dialectProvider , string selectExpression , string alias )
2146
+ public SelectItemExpression ( IOrmLiteDialectProvider dialectProvider , string selectExpression , string alias )
2130
2147
: base ( dialectProvider , alias )
2131
2148
{
2132
2149
if ( string . IsNullOrEmpty ( selectExpression ) )
@@ -2149,9 +2166,9 @@ public override string ToString()
2149
2166
}
2150
2167
}
2151
2168
2152
- public class SelectListColumn : SelectListItem
2169
+ public class SelectItemColumn : SelectItem
2153
2170
{
2154
- public SelectListColumn ( IOrmLiteDialectProvider dialectProvider , string columnName , string columnAlias = null , string quotedTableAlias = null )
2171
+ public SelectItemColumn ( IOrmLiteDialectProvider dialectProvider , string columnName , string columnAlias = null , string quotedTableAlias = null )
2155
2172
: base ( dialectProvider , columnAlias )
2156
2173
{
2157
2174
if ( string . IsNullOrEmpty ( columnName ) )
@@ -2183,37 +2200,37 @@ public override string ToString()
2183
2200
}
2184
2201
}
2185
2202
2186
- public class SelectList
2187
- {
2188
- public SelectList ( )
2189
- {
2190
- Items = new List < SelectListItem > ( ) ;
2191
- }
2192
-
2193
- public SelectList ( ICollection < SelectListItem > items )
2194
- {
2195
- if ( items == null )
2196
- throw new ArgumentNullException ( "items" ) ;
2197
-
2198
- Items = new List < SelectListItem > ( items ) ;
2199
- }
2200
-
2201
- public List < SelectListItem > Items { get ; set ; }
2202
-
2203
- public override string ToString ( )
2204
- {
2205
- var sb = StringBuilderCache . Allocate ( ) ;
2206
-
2207
- foreach ( var item in Items )
2208
- {
2209
- if ( sb . Length > 0 )
2210
- sb . Append ( ", " ) ;
2211
- sb . Append ( item ) ;
2212
- }
2213
-
2214
- return StringBuilderCache . ReturnAndFree ( sb ) ;
2215
- }
2216
- }
2203
+ // public class SelectList
2204
+ // {
2205
+ // public SelectList()
2206
+ // {
2207
+ // Items = new List<SelectItem >();
2208
+ // }
2209
+
2210
+ // public SelectList(ICollection<SelectItem > items)
2211
+ // {
2212
+ // if (items == null)
2213
+ // throw new ArgumentNullException("items");
2214
+
2215
+ // Items = new List<SelectItem >(items);
2216
+ // }
2217
+
2218
+ // public List<SelectItem > Items { get; set; }
2219
+
2220
+ // public override string ToString()
2221
+ // {
2222
+ // var sb = StringBuilderCache.Allocate();
2223
+
2224
+ // foreach (var item in Items)
2225
+ // {
2226
+ // if (sb.Length > 0)
2227
+ // sb.Append(", ");
2228
+ // sb.Append(item);
2229
+ // }
2230
+
2231
+ // return StringBuilderCache.ReturnAndFree(sb);
2232
+ // }
2233
+ // }
2217
2234
2218
2235
public class OrmLiteDataParameter : IDbDataParameter
2219
2236
{
0 commit comments