@@ -38,7 +38,7 @@ internal static string FilterMethod(string q, List<object> parametersForLinqQuer
3838 return makeClause ( "Contains" , q ) ;
3939 }
4040 }
41- public static string NumericFilter ( string query , string columnname , Type columnType , List < object > parametersForLinqQuery )
41+ public static string NumericFilter ( string query , string columnname , ColInfo colInfo , List < object > parametersForLinqQuery )
4242 {
4343 if ( query . StartsWith ( "^" ) ) query = query . TrimStart ( '^' ) ;
4444 if ( query . EndsWith ( "$" ) ) query = query . TrimEnd ( '$' ) ;
@@ -51,7 +51,7 @@ public static string NumericFilter(string query, string columnname, Type columnT
5151 var clause = null as string ;
5252 try
5353 {
54- parametersForLinqQuery . Add ( Convert . ChangeType ( parts [ 0 ] , columnType ) ) ;
54+ parametersForLinqQuery . Add ( Convert . ChangeType ( parts [ 0 ] , colInfo . Type ) ) ;
5555 clause = string . Format ( "{0} >= @{1}" , columnname , parametersForLinqQuery . Count - 1 ) ;
5656 }
5757 catch ( FormatException )
@@ -60,7 +60,7 @@ public static string NumericFilter(string query, string columnname, Type columnT
6060
6161 try
6262 {
63- parametersForLinqQuery . Add ( Convert . ChangeType ( parts [ 1 ] , columnType ) ) ;
63+ parametersForLinqQuery . Add ( Convert . ChangeType ( parts [ 1 ] , colInfo . Type ) ) ;
6464 if ( clause != null ) clause += " and " ;
6565 clause += string . Format ( "{0} <= @{1}" , columnname , parametersForLinqQuery . Count - 1 ) ;
6666 }
@@ -74,7 +74,7 @@ public static string NumericFilter(string query, string columnname, Type columnT
7474 {
7575 try
7676 {
77- parametersForLinqQuery . Add ( Convert . ChangeType ( query , columnType ) ) ;
77+ parametersForLinqQuery . Add ( Convert . ChangeType ( query , colInfo . Type ) ) ;
7878 return string . Format ( "{0} == @{1}" , columnname , parametersForLinqQuery . Count - 1 ) ;
7979 }
8080 catch ( FormatException )
@@ -84,7 +84,7 @@ public static string NumericFilter(string query, string columnname, Type columnT
8484 }
8585 }
8686
87- public static string DateTimeOffsetFilter ( string query , string columnname , Type columnType , List < object > parametersForLinqQuery )
87+ public static string DateTimeOffsetFilter ( string query , string columnname , ColInfo colInfo , List < object > parametersForLinqQuery )
8888 {
8989 if ( query == "~" ) return string . Empty ;
9090
@@ -93,37 +93,51 @@ public static string DateTimeOffsetFilter(string query, string columnname, Type
9393 var parts = query . Split ( '~' ) ;
9494 DateTimeOffset start , end ;
9595 DateTimeOffset . TryParse ( parts [ 0 ] ?? "" , out start ) ;
96- if ( ! DateTimeOffset . TryParse ( parts [ 1 ] ?? "" , out end ) ) end = DateTimeOffset . MaxValue ;
96+ if ( ! DateTimeOffset . TryParse ( parts [ 1 ] ?? "" , out end ) )
97+ {
98+ end = DateTimeOffset . MaxValue ;
99+ }
100+ else
101+ {
102+ end = end . Date . AddDays ( 1 ) ;
103+ }
97104
98105 parametersForLinqQuery . Add ( start ) ;
99- parametersForLinqQuery . Add ( end ) ;
100- return string . Format ( "{0} >= @{1} and {0} <= @{2}" , columnname , parametersForLinqQuery . Count - 2 , parametersForLinqQuery . Count - 1 ) ;
106+ parametersForLinqQuery . Add ( end . AddDays ( 1 ) . AddSeconds ( - 1 ) ) ;
107+ return string . Format ( "{0} >= @{1} and {0} < @{2}" , columnname , parametersForLinqQuery . Count - 2 , parametersForLinqQuery . Count - 1 ) ;
101108 }
102109 else
103110 {
104- return string . Format ( "{1}.ToLocalTime().ToString(\" g\" ).{0}" , FilterMethod ( query , parametersForLinqQuery , columnType ) , columnname ) ;
111+ return string . Format ( "{1}.ToLocalTime().ToString(\" g\" ).{0}" , FilterMethod ( query , parametersForLinqQuery , colInfo . Type ) , columnname ) ;
105112 }
106113 }
107- public static string DateTimeFilter ( string query , string columnname , Type columnType , List < object > parametersForLinqQuery )
114+ public static string DateTimeFilter ( string query , string columnname , ColInfo colInfo , List < object > parametersForLinqQuery )
108115 {
109116 if ( query == "~" ) return string . Empty ;
110117 if ( query . Contains ( "~" ) )
111118 {
112119 var parts = query . Split ( '~' ) ;
113120 DateTime start , end ;
114121 DateTime . TryParse ( parts [ 0 ] ?? "" , out start ) ;
115- if ( ! DateTime . TryParse ( parts [ 1 ] ?? "" , out end ) ) end = DateTime . MaxValue ;
122+ if ( ! DateTime . TryParse ( parts [ 1 ] ?? "" , out end ) )
123+ {
124+ end = DateTime . MaxValue ;
125+ }
126+ else
127+ {
128+ end = end . Date . AddDays ( 1 ) ;
129+ }
116130
117131 parametersForLinqQuery . Add ( start ) ;
118132 parametersForLinqQuery . Add ( end ) ;
119- return string . Format ( "{0} >= @{1} and {0} <= @{2}" , columnname , parametersForLinqQuery . Count - 2 , parametersForLinqQuery . Count - 1 ) ;
133+ return string . Format ( "{0} >= @{1} and {0} < @{2}" , columnname , parametersForLinqQuery . Count - 2 , parametersForLinqQuery . Count - 1 ) ;
120134 }
121135 else
122136 {
123- return string . Format ( "{1}.ToLocalTime().ToString(\" g\" ).{0}" , FilterMethod ( query , parametersForLinqQuery , columnType ) , columnname ) ;
137+ return string . Format ( "{1}.ToLocalTime().ToString(\" g\" ).{0}" , FilterMethod ( query , parametersForLinqQuery , colInfo . Type ) , columnname ) ;
124138 }
125139 }
126- public static string BoolFilter ( string query , string columnname , Type columnType , List < object > parametersForLinqQuery )
140+ public static string BoolFilter ( string query , string columnname , ColInfo colInfo , List < object > parametersForLinqQuery )
127141 {
128142 if ( query != null )
129143 query = query . TrimStart ( '^' ) . TrimEnd ( '$' ) ;
@@ -133,15 +147,15 @@ public static string BoolFilter(string query, string columnname, Type columnType
133147 if ( query . ToLower ( ) == "true" ) return columnname + " == true" ;
134148 return columnname + " == false" ;
135149 }
136- if ( columnType == typeof ( bool ? ) )
150+ if ( colInfo . Type == typeof ( bool ? ) )
137151 {
138152 if ( lowerCaseQuery == "null" ) return columnname + " == null" ;
139153 }
140154 return null ;
141155
142156 }
143157
144- public static string StringFilter ( string q , string columnname , Type columntype , List < object > parametersforlinqquery )
158+ public static string StringFilter ( string q , string columnname , ColInfo columntype , List < object > parametersforlinqquery )
145159 {
146160 if ( q == ".*" ) return "" ;
147161 if ( q . StartsWith ( "^" ) )
@@ -172,12 +186,12 @@ public static string StringFilter(string q, string columnname, Type columntype,
172186 }
173187 }
174188
175- public static string EnumFilter ( string q , string columnname , Type type , List < object > parametersForLinqQuery )
189+ public static string EnumFilter ( string q , string columnname , ColInfo colInfo , List < object > parametersForLinqQuery )
176190 {
177191
178192 if ( q . StartsWith ( "^" ) ) q = q . Substring ( 1 ) ;
179193 if ( q . EndsWith ( "$" ) ) q = q . Substring ( 0 , q . Length - 1 ) ;
180- parametersForLinqQuery . Add ( ParseValue ( q , type ) ) ;
194+ parametersForLinqQuery . Add ( ParseValue ( q , colInfo . Type ) ) ;
181195 return columnname + " == @" + ( parametersForLinqQuery . Count - 1 ) ;
182196 }
183197 }
0 commit comments