@@ -14,6 +14,8 @@ class Animal
14
14
public Oid Id { get ; set ; }
15
15
16
16
public int Age { get ; set ; }
17
+
18
+ public string Name { get ; set ; }
17
19
}
18
20
19
21
class Bear : Animal
@@ -156,6 +158,77 @@ orderby a.Age ascending
156
158
Assert . AreEqual ( 19 , animals [ 0 ] . Age ) ;
157
159
}
158
160
161
+ [ Test ]
162
+ public void Should_support_projections_with_base_class_collection ( )
163
+ {
164
+ var animalCollection = DB . GetCollection < Animal > ( ) ;
165
+ animalCollection . Save ( new Animal ( ) { Age = 20 , Name = "Jim" } ) ;
166
+ animalCollection . Save ( new Tiger ( ) { Age = 19 , Name = "Bob" } ) ;
167
+
168
+ var animals = animalCollection . FindAll ( ) . Fields ( new { Age = true } ) . Sort ( "Age" , IndexOrder . Ascending ) . Documents . ToList ( ) ;
169
+
170
+ Assert . AreEqual ( 2 , animals . Count ) ;
171
+ Assert . IsInstanceOfType ( typeof ( Tiger ) , animals [ 0 ] ) ;
172
+ Assert . AreEqual ( 19 , animals [ 0 ] . Age ) ;
173
+ Assert . IsNull ( animals [ 0 ] . Name ) ;
174
+ Assert . IsInstanceOfType ( typeof ( Animal ) , animals [ 1 ] ) ;
175
+ Assert . AreEqual ( 20 , animals [ 1 ] . Age ) ;
176
+ Assert . IsNull ( animals [ 1 ] . Name ) ;
177
+ }
178
+
179
+ [ Test ]
180
+ public void Should_support_projections_with_base_class_collections_with_linq ( )
181
+ {
182
+ var animalCollection = DB . GetCollection < Animal > ( ) ;
183
+ animalCollection . Save ( new Animal ( ) { Age = 20 , Name = "Jim" } ) ;
184
+ animalCollection . Save ( new Tiger ( ) { Age = 19 , Name = "Bob" } ) ;
185
+
186
+ var animals = ( from a in animalCollection . Linq ( )
187
+ orderby a . Age ascending
188
+ select new { a . Name , a . Age } ) . ToList ( ) ;
189
+
190
+ Assert . AreEqual ( 2 , animals . Count ) ;
191
+ Assert . AreEqual ( 19 , animals [ 0 ] . Age ) ;
192
+ Assert . AreEqual ( "Bob" , animals [ 0 ] . Name ) ;
193
+ Assert . AreEqual ( 20 , animals [ 1 ] . Age ) ;
194
+ Assert . AreEqual ( "Jim" , animals [ 1 ] . Name ) ;
195
+ }
196
+
197
+ [ Test ]
198
+ public void Should_support_projections_with_inherited_class_collection ( )
199
+ {
200
+ var animalCollection = DB . GetCollection < Animal > ( ) ;
201
+ animalCollection . Save ( new Animal ( ) { Age = 20 , Name = "Jim" } ) ;
202
+ animalCollection . Save ( new Tiger ( ) { Age = 19 , Name = "Bob" } ) ;
203
+
204
+ var catCollection = DB . GetCollection < Cat > ( ) ;
205
+
206
+ var cats = catCollection . FindAll ( ) . Fields ( new { Age = true } ) . Sort ( "Age" , IndexOrder . Ascending ) . Documents . ToList ( ) ;
207
+
208
+ Assert . AreEqual ( 1 , cats . Count ) ;
209
+ Assert . IsInstanceOfType ( typeof ( Tiger ) , cats [ 0 ] ) ;
210
+ Assert . AreEqual ( 19 , cats [ 0 ] . Age ) ;
211
+ Assert . IsNull ( cats [ 0 ] . Name ) ;
212
+ }
213
+
214
+ [ Test ]
215
+ public void Should_support_projections_with_inherited_class_collections_with_linq ( )
216
+ {
217
+ var animalCollection = DB . GetCollection < Animal > ( ) ;
218
+ animalCollection . Save ( new Animal ( ) { Age = 20 , Name = "Jim" } ) ;
219
+ animalCollection . Save ( new Tiger ( ) { Age = 19 , Name = "Bob" } ) ;
220
+
221
+ var catCollection = DB . GetCollection < Cat > ( ) ;
222
+
223
+ var cats = ( from a in catCollection . Linq ( )
224
+ orderby a . Age ascending
225
+ select new { a . Name , a . Age } ) . ToList ( ) ;
226
+
227
+ Assert . AreEqual ( 1 , cats . Count ) ;
228
+ Assert . AreEqual ( 19 , cats [ 0 ] . Age ) ;
229
+ Assert . AreEqual ( "Bob" , cats [ 0 ] . Name ) ;
230
+ }
231
+
159
232
[ Test ]
160
233
public void Should_get_correct_count_with_base_class_collection ( )
161
234
{
0 commit comments