Mercurial > pub > bltoolkit
comparison UnitTests/Linq/SubQuery.cs @ 0:f990fcb411a9
Копия текущей версии из github
| author | cin |
|---|---|
| date | Thu, 27 Mar 2014 21:46:09 +0400 |
| parents | |
| children |
comparison
equal
deleted
inserted
replaced
| -1:000000000000 | 0:f990fcb411a9 |
|---|---|
| 1 using System; | |
| 2 using System.Collections.Generic; | |
| 3 using System.Linq; | |
| 4 | |
| 5 using BLToolkit.Data.DataProvider; | |
| 6 | |
| 7 using NUnit.Framework; | |
| 8 | |
| 9 namespace Data.Linq | |
| 10 { | |
| 11 using Model; | |
| 12 | |
| 13 [TestFixture] | |
| 14 public class SubQuery : TestBase | |
| 15 { | |
| 16 [Test] | |
| 17 public void Test1() | |
| 18 { | |
| 19 ForEachProvider(db => AreEqual( | |
| 20 from p in Parent | |
| 21 where p.ParentID != 5 | |
| 22 select (from ch in Child where ch.ParentID == p.ParentID select ch.ChildID).Max(), | |
| 23 from p in db.Parent | |
| 24 where p.ParentID != 5 | |
| 25 select (from ch in db.Child where ch.ParentID == p.ParentID select ch.ChildID).Max())); | |
| 26 } | |
| 27 | |
| 28 [Test] | |
| 29 public void Test2() | |
| 30 { | |
| 31 ForEachProvider(db => AreEqual( | |
| 32 from p in Parent | |
| 33 where p.ParentID != 5 | |
| 34 select (from ch in Child where ch.ParentID == p.ParentID && ch.ChildID > 1 select ch.ChildID).Max(), | |
| 35 from p in db.Parent | |
| 36 where p.ParentID != 5 | |
| 37 select (from ch in db.Child where ch.ParentID == p.ParentID && ch.ChildID > 1 select ch.ChildID).Max())); | |
| 38 } | |
| 39 | |
| 40 [Test] | |
| 41 public void Test3() | |
| 42 { | |
| 43 ForEachProvider(db => AreEqual( | |
| 44 from p in Parent | |
| 45 where p.ParentID != 5 | |
| 46 select (from ch in Child where ch.ParentID == p.ParentID && ch.ChildID == ch.ParentID * 10 + 1 select ch.ChildID).SingleOrDefault(), | |
| 47 from p in db.Parent | |
| 48 where p.ParentID != 5 | |
| 49 select (from ch in db.Child where ch.ParentID == p.ParentID && ch.ChildID == ch.ParentID * 10 + 1 select ch.ChildID).SingleOrDefault())); | |
| 50 } | |
| 51 | |
| 52 [Test] | |
| 53 public void Test4() | |
| 54 { | |
| 55 ForEachProvider(db => AreEqual( | |
| 56 from p in Parent | |
| 57 where p.ParentID != 5 | |
| 58 select (from ch in Child where ch.ParentID == p.ParentID && ch.ChildID == ch.ParentID * 10 + 1 select ch.ChildID).FirstOrDefault(), | |
| 59 from p in db.Parent | |
| 60 where p.ParentID != 5 | |
| 61 select (from ch in db.Child where ch.ParentID == p.ParentID && ch.ChildID == ch.ParentID * 10 + 1 select ch.ChildID).FirstOrDefault())); | |
| 62 } | |
| 63 | |
| 64 static int _testValue = 3; | |
| 65 | |
| 66 [Test] | |
| 67 public void Test5() | |
| 68 { | |
| 69 IEnumerable<int> ids = new[] { 1, 2 }; | |
| 70 | |
| 71 var eids = Parent | |
| 72 .Where(p => ids.Contains(p.ParentID)) | |
| 73 .Select(p => p.Value1 == null ? p.ParentID : p.ParentID + 1) | |
| 74 .Distinct(); | |
| 75 | |
| 76 var expected = eids.Select(id => | |
| 77 new | |
| 78 { | |
| 79 id, | |
| 80 Count1 = Child.Where(p => p.ParentID == id).Count(), | |
| 81 Count2 = Child.Where(p => p.ParentID == id && p.ParentID == _testValue).Count(), | |
| 82 }); | |
| 83 | |
| 84 ForEachProvider(db => | |
| 85 { | |
| 86 var rids = db.Parent | |
| 87 .Where(p => ids.Contains(p.ParentID)) | |
| 88 .Select(p => p.Value1 == null ? p.ParentID : p.ParentID + 1) | |
| 89 .Distinct(); | |
| 90 | |
| 91 var result = rids.Select(id => | |
| 92 new | |
| 93 { | |
| 94 id, | |
| 95 Count1 = db.Child.Where(p => p.ParentID == id).Count(), | |
| 96 Count2 = db.Child.Where(p => p.ParentID == id && p.ParentID == _testValue).Count(), | |
| 97 }); | |
| 98 | |
| 99 AreEqual(expected, result); | |
| 100 }); | |
| 101 } | |
| 102 | |
| 103 [Test] | |
| 104 public void Test6() | |
| 105 { | |
| 106 var id = 2; | |
| 107 var b = false; | |
| 108 | |
| 109 var q = Child.Where(c => c.ParentID == id).OrderBy(c => c.ChildID); | |
| 110 q = b | |
| 111 ? q.OrderBy(m => m.ParentID) | |
| 112 : q.OrderByDescending(m => m.ParentID); | |
| 113 | |
| 114 var gc = GrandChild; | |
| 115 var expected = q.Select(c => new | |
| 116 { | |
| 117 ID = c.ChildID, | |
| 118 c.ParentID, | |
| 119 Sum = gc.Where(g => g.ChildID == c.ChildID && g.GrandChildID > 0).Sum(g => (int)g.ChildID * g.GrandChildID), | |
| 120 Count1 = gc.Count(g => g.ChildID == c.ChildID && g.GrandChildID > 0) | |
| 121 }); | |
| 122 | |
| 123 ForEachProvider(db => | |
| 124 { | |
| 125 var r = db.Child.Where(c => c.ParentID == id).OrderBy(c => c.ChildID); | |
| 126 r = b | |
| 127 ? r.OrderBy(m => m.ParentID) | |
| 128 : r.OrderByDescending(m => m.ParentID); | |
| 129 | |
| 130 var rgc = db.GrandChild; | |
| 131 var result = r.Select(c => new | |
| 132 { | |
| 133 ID = c.ChildID, | |
| 134 c.ParentID, | |
| 135 Sum = rgc.Where(g => g.ChildID == c.ChildID && g.GrandChildID > 0).Sum(g => (int)g.ChildID * g.GrandChildID), | |
| 136 Count1 = rgc.Count(g => g.ChildID == c.ChildID && g.GrandChildID > 0), | |
| 137 }); | |
| 138 | |
| 139 AreEqual(expected, result); | |
| 140 }); | |
| 141 } | |
| 142 | |
| 143 [Test] | |
| 144 public void Test7() | |
| 145 { | |
| 146 ForEachProvider(db => AreEqual( | |
| 147 from c in Child select new { Count = GrandChild.Where(g => g.ChildID == c.ChildID).Count(), }, | |
| 148 from c in db.Child select new { Count = db.GrandChild.Where(g => g.ChildID == c.ChildID).Count(), })); | |
| 149 } | |
| 150 | |
| 151 [Test] | |
| 152 public void Test8() | |
| 153 { | |
| 154 ForEachProvider(db => | |
| 155 { | |
| 156 var parent = | |
| 157 from p in db.Parent | |
| 158 where p.ParentID == 1 | |
| 159 select p.ParentID; | |
| 160 | |
| 161 var chilren = | |
| 162 from c in db.Child | |
| 163 where parent.Contains(c.ParentID) | |
| 164 select c; | |
| 165 | |
| 166 var chs1 = chilren.ToList(); | |
| 167 | |
| 168 parent = | |
| 169 from p in db.Parent | |
| 170 where p.ParentID == 2 | |
| 171 select p.ParentID; | |
| 172 | |
| 173 chilren = | |
| 174 from c in db.Child | |
| 175 where parent.Contains(c.ParentID) | |
| 176 select c; | |
| 177 | |
| 178 var chs2 = chilren.ToList(); | |
| 179 | |
| 180 Assert.AreEqual(chs2.Count, chs2.Except(chs1).Count()); | |
| 181 }); | |
| 182 } | |
| 183 | |
| 184 [Test] | |
| 185 public void ObjectCompare() | |
| 186 { | |
| 187 ForEachProvider(new[] { ProviderName.Access }, db => AreEqual( | |
| 188 from p in Parent | |
| 189 from c in | |
| 190 from c in | |
| 191 from c in Child select new Child { ParentID = c.ParentID, ChildID = c.ChildID + 1, Parent = c.Parent } | |
| 192 where c.ChildID > 0 | |
| 193 select c | |
| 194 where p == c.Parent | |
| 195 select new { p.ParentID, c.ChildID }, | |
| 196 from p in db.Parent | |
| 197 from c in | |
| 198 from c in | |
| 199 from c in db.Child select new Child { ParentID = c.ParentID, ChildID = c.ChildID + 1, Parent = c.Parent } | |
| 200 where c.ChildID > 0 | |
| 201 select c | |
| 202 where p == c.Parent | |
| 203 select new { p.ParentID, c.ChildID })); | |
| 204 } | |
| 205 | |
| 206 [Test] | |
| 207 public void Contains1() | |
| 208 { | |
| 209 ForEachProvider( | |
| 210 new[] { ProviderName.Informix, ProviderName.MySql, ProviderName.Sybase }, | |
| 211 db => AreEqual( | |
| 212 from p in Parent | |
| 213 where (from p1 in Parent where p1.Value1 == p.Value1 select p.ParentID).Take(3).Contains(p.ParentID) | |
| 214 select p, | |
| 215 from p in db.Parent | |
| 216 where (from p1 in db.Parent where p1.Value1 == p.Value1 select p.ParentID).Take(3).Contains(p.ParentID) | |
| 217 select p)); | |
| 218 } | |
| 219 | |
| 220 [Test] | |
| 221 public void Contains2() | |
| 222 { | |
| 223 ForEachProvider( | |
| 224 new[] { ProviderName.Informix, ProviderName.MySql, ProviderName.Sybase }, | |
| 225 db => AreEqual( | |
| 226 from p in Parent | |
| 227 where (from p1 in Parent where p1.Value1 == p.Value1 select p1.ParentID).Take(3).Contains(p.ParentID) | |
| 228 select p, | |
| 229 from p in db.Parent | |
| 230 where (from p1 in db.Parent where p1.Value1 == p.Value1 select p1.ParentID).Take(3).Contains(p.ParentID) | |
| 231 select p)); | |
| 232 } | |
| 233 | |
| 234 [Test] | |
| 235 public void SubSub1() | |
| 236 { | |
| 237 ForEachProvider( | |
| 238 new[] { ProviderName.SqlCe, ProviderName.Access, ProviderName.DB2, "Oracle", ProviderName.MySql, ProviderName.Sybase }, | |
| 239 db => AreEqual( | |
| 240 from p1 in | |
| 241 from p2 in Parent | |
| 242 select new { p2, ID = p2.ParentID + 1 } | |
| 243 where p1.ID > 0 | |
| 244 select new | |
| 245 { | |
| 246 Count = | |
| 247 ( | |
| 248 from c in p1.p2.Children | |
| 249 select new { c, ID = c.ParentID + 1 } into c | |
| 250 where c.ID < p1.ID | |
| 251 select c | |
| 252 ).Count() | |
| 253 }, | |
| 254 from p1 in | |
| 255 from p2 in db.Parent | |
| 256 select new { p2, ID = p2.ParentID + 1 } | |
| 257 where p1.ID > 0 | |
| 258 select new | |
| 259 { | |
| 260 Count = | |
| 261 ( | |
| 262 from c in p1.p2.Children | |
| 263 select new { c, ID = c.ParentID + 1 } into c | |
| 264 where c.ID < p1.ID | |
| 265 select c | |
| 266 ).Count() | |
| 267 })); | |
| 268 } | |
| 269 | |
| 270 [Test] | |
| 271 public void SubSub2() | |
| 272 { | |
| 273 ForEachProvider( | |
| 274 new[] { ProviderName.Access, ProviderName.DB2, "Oracle", "DevartOracle", "Sql2000", ProviderName.MySql, ProviderName.Sybase, ProviderName.Informix }, | |
| 275 db => AreEqual( | |
| 276 from p1 in | |
| 277 from p2 in Parent | |
| 278 select new { p2, ID = p2.ParentID + 1 } into p3 | |
| 279 where p3.ID > 0 | |
| 280 select new { p2 = p3, ID = p3.ID + 1 } | |
| 281 where p1.ID > 0 | |
| 282 select new | |
| 283 { | |
| 284 Count = | |
| 285 ( | |
| 286 from c in p1.p2.p2.Children | |
| 287 select new { c, ID = c.ParentID + 1 } into c | |
| 288 where c.ID < p1.ID | |
| 289 select c.c.ParentID + 1 into c | |
| 290 where c < p1.ID | |
| 291 select c | |
| 292 ).FirstOrDefault() | |
| 293 }, | |
| 294 from p1 in | |
| 295 from p2 in db.Parent | |
| 296 select new { p2, ID = p2.ParentID + 1 } into p3 | |
| 297 where p3.ID > 0 | |
| 298 select new { p2 = p3, ID = p3.ID + 1 } | |
| 299 where p1.ID > 0 | |
| 300 select new | |
| 301 { | |
| 302 Count = | |
| 303 ( | |
| 304 from c in p1.p2.p2.Children | |
| 305 select new { c, ID = c.ParentID + 1 } into c | |
| 306 where c.ID < p1.ID | |
| 307 select c.c.ParentID + 1 into c | |
| 308 where c < p1.ID | |
| 309 select c | |
| 310 ).FirstOrDefault() | |
| 311 })); | |
| 312 } | |
| 313 | |
| 314 //[Test] | |
| 315 public void SubSub201() | |
| 316 { | |
| 317 ForEachProvider( | |
| 318 //new[] { ProviderName.SqlCe, ProviderName.Access, ProviderName.DB2, "Oracle", ProviderName.MySql, ProviderName.Sybase }, | |
| 319 db => AreEqual( | |
| 320 from p1 in | |
| 321 from p2 in Parent | |
| 322 select new { p2, ID = p2.ParentID + 1 } into p3 | |
| 323 where p3.ID > 0 | |
| 324 select new { p2 = p3, ID = p3.ID + 1 } | |
| 325 where p1.ID > 0 | |
| 326 select new | |
| 327 { | |
| 328 Count = | |
| 329 ( | |
| 330 from c in p1.p2.p2.Children | |
| 331 select new { c, ID = c.ParentID + 1 } into c | |
| 332 where c.ID < p1.ID | |
| 333 select new { c.c, ID = c.c.ParentID + 1 } into c | |
| 334 where c.ID < p1.ID | |
| 335 select c | |
| 336 ).FirstOrDefault() | |
| 337 }, | |
| 338 from p1 in | |
| 339 from p2 in db.Parent | |
| 340 select new { p2, ID = p2.ParentID + 1 } into p3 | |
| 341 where p3.ID > 0 | |
| 342 select new { p2 = p3, ID = p3.ID + 1 } | |
| 343 where p1.ID > 0 | |
| 344 select new | |
| 345 { | |
| 346 Count = | |
| 347 ( | |
| 348 from c in p1.p2.p2.Children | |
| 349 select new { c, ID = c.ParentID + 1 } into c | |
| 350 where c.ID < p1.ID | |
| 351 select new { c.c, ID = c.c.ParentID + 1 } into c | |
| 352 where c.ID < p1.ID | |
| 353 select c | |
| 354 ).FirstOrDefault() | |
| 355 })); | |
| 356 } | |
| 357 | |
| 358 [Test] | |
| 359 public void SubSub21() | |
| 360 { | |
| 361 ForEachProvider( | |
| 362 new[] { ProviderName.SqlCe, ProviderName.DB2, "Oracle", ProviderName.MySql, ProviderName.Sybase, ProviderName.Access }, | |
| 363 db => AreEqual( | |
| 364 from p1 in | |
| 365 from p2 in Parent | |
| 366 select new { p2, ID = p2.ParentID + 1 } into p3 | |
| 367 where p3.ID > 0 | |
| 368 select new { p2 = p3, ID = p3.ID + 1 } | |
| 369 where p1.ID > 0 | |
| 370 select new | |
| 371 { | |
| 372 Count = | |
| 373 ( | |
| 374 from c in p1.p2.p2.Children | |
| 375 select new { c, ID = c.ParentID + 1 } into c | |
| 376 where c.ID < p1.ID | |
| 377 select new { c.c, ID = c.c.ParentID + 1 } into c | |
| 378 where c.ID < p1.ID | |
| 379 select c | |
| 380 ).Count() | |
| 381 }, | |
| 382 from p1 in | |
| 383 from p2 in db.Parent | |
| 384 select new { p2, ID = p2.ParentID + 1 } into p3 | |
| 385 where p3.ID > 0 | |
| 386 select new { p2 = p3, ID = p3.ID + 1 } | |
| 387 where p1.ID > 0 | |
| 388 select new | |
| 389 { | |
| 390 Count = | |
| 391 ( | |
| 392 from c in p1.p2.p2.Children | |
| 393 select new { c, ID = c.ParentID + 1 } into c | |
| 394 where c.ID < p1.ID | |
| 395 select new { c.c, ID = c.c.ParentID + 1 } into c | |
| 396 where c.ID < p1.ID | |
| 397 select c | |
| 398 ).Count() | |
| 399 })); | |
| 400 } | |
| 401 | |
| 402 [Test] | |
| 403 public void SubSub211() | |
| 404 { | |
| 405 ForEachProvider( | |
| 406 new[] { ProviderName.SqlCe, ProviderName.Access, ProviderName.DB2, "Oracle", ProviderName.MySql, ProviderName.Sybase }, | |
| 407 db => AreEqual( | |
| 408 from p1 in | |
| 409 from p2 in Parent | |
| 410 select new { p2, ID = p2.ParentID + 1 } into p3 | |
| 411 where p3.ID > 0 | |
| 412 select new { p2 = p3, ID = p3.ID + 1 } | |
| 413 where p1.ID > 0 | |
| 414 select new | |
| 415 { | |
| 416 Count = | |
| 417 ( | |
| 418 from c in p1.p2.p2.Children | |
| 419 from g in c.GrandChildren | |
| 420 select new { g, ID = g.ParentID + 1 } into c | |
| 421 where c.ID < p1.ID | |
| 422 select new { c.g, ID = c.g.ParentID + 1 } into c | |
| 423 where c.ID < p1.ID | |
| 424 select c | |
| 425 ).Count() | |
| 426 }, | |
| 427 from p1 in | |
| 428 from p2 in db.Parent | |
| 429 select new { p2, ID = p2.ParentID + 1 } into p3 | |
| 430 where p3.ID > 0 | |
| 431 select new { p2 = p3, ID = p3.ID + 1 } | |
| 432 where p1.ID > 0 | |
| 433 select new | |
| 434 { | |
| 435 Count = | |
| 436 ( | |
| 437 from c in p1.p2.p2.Children | |
| 438 from g in c.GrandChildren | |
| 439 select new { g, ID = g.ParentID + 1 } into c | |
| 440 where c.ID < p1.ID | |
| 441 select new { c.g, ID = c.g.ParentID + 1 } into c | |
| 442 where c.ID < p1.ID | |
| 443 select c | |
| 444 ).Count() | |
| 445 })); | |
| 446 } | |
| 447 | |
| 448 [Test] | |
| 449 public void SubSub212() | |
| 450 { | |
| 451 ForEachProvider( | |
| 452 new[] { ProviderName.SqlCe, ProviderName.Access, ProviderName.DB2, "Oracle", ProviderName.MySql, ProviderName.Sybase }, | |
| 453 db => AreEqual( | |
| 454 from p1 in | |
| 455 from p2 in Child | |
| 456 select new { p2, ID = p2.ParentID + 1 } into p3 | |
| 457 where p3.ID > 0 | |
| 458 select new { p2 = p3, ID = p3.ID + 1 } | |
| 459 where p1.ID > 0 | |
| 460 select new | |
| 461 { | |
| 462 Count = | |
| 463 ( | |
| 464 from c in p1.p2.p2.Parent.GrandChildren | |
| 465 select new { c, ID = c.ParentID + 1 } into c | |
| 466 where c.ID < p1.ID | |
| 467 select new { c.c, ID = c.c.ParentID + 1 } into c | |
| 468 where c.ID < p1.ID | |
| 469 select c | |
| 470 ).Count() | |
| 471 }, | |
| 472 from p1 in | |
| 473 from p2 in db.Child | |
| 474 select new { p2, ID = p2.ParentID + 1 } into p3 | |
| 475 where p3.ID > 0 | |
| 476 select new { p2 = p3, ID = p3.ID + 1 } | |
| 477 where p1.ID > 0 | |
| 478 select new | |
| 479 { | |
| 480 Count = | |
| 481 ( | |
| 482 from c in p1.p2.p2.Parent.GrandChildren | |
| 483 select new { c, ID = c.ParentID + 1 } into c | |
| 484 where c.ID < p1.ID | |
| 485 select new { c.c, ID = c.c.ParentID + 1 } into c | |
| 486 where c.ID < p1.ID | |
| 487 select c | |
| 488 ).Count() | |
| 489 })); | |
| 490 } | |
| 491 | |
| 492 [Test] | |
| 493 public void SubSub22() | |
| 494 { | |
| 495 ForEachProvider( | |
| 496 new[] { ProviderName.SqlCe, ProviderName.Access, ProviderName.DB2, "Oracle", ProviderName.MySql, ProviderName.Sybase }, | |
| 497 db => AreEqual( | |
| 498 from p1 in | |
| 499 from p2 in Parent | |
| 500 select new { p2, ID = p2.ParentID + 1 } into p3 | |
| 501 where p3.ID > 0 | |
| 502 select new { p2 = p3, ID = p3.ID + 1 } | |
| 503 where p1.ID > 0 | |
| 504 select new | |
| 505 { | |
| 506 Count = | |
| 507 ( | |
| 508 from c in Child | |
| 509 where p1.p2.p2.ParentID == c.ParentID | |
| 510 select new { c, ID = c.ParentID + 1 } into c | |
| 511 where c.ID < p1.ID | |
| 512 select new { c.c, ID = c.c.ParentID + 1 } into c | |
| 513 where c.ID < p1.ID | |
| 514 select c | |
| 515 ).Count() | |
| 516 }, | |
| 517 from p1 in | |
| 518 from p2 in db.Parent | |
| 519 select new { p2, ID = p2.ParentID + 1 } into p3 | |
| 520 where p3.ID > 0 | |
| 521 select new { p2 = p3, ID = p3.ID + 1 } | |
| 522 where p1.ID > 0 | |
| 523 select new | |
| 524 { | |
| 525 Count = | |
| 526 ( | |
| 527 from c in db.Child | |
| 528 where p1.p2.p2.ParentID == c.ParentID | |
| 529 select new { c, ID = c.ParentID + 1 } into c | |
| 530 where c.ID < p1.ID | |
| 531 select new { c.c, ID = c.c.ParentID + 1 } into c | |
| 532 where c.ID < p1.ID | |
| 533 select c | |
| 534 ).Count() | |
| 535 })); | |
| 536 } | |
| 537 | |
| 538 [Test] | |
| 539 public void Count1() | |
| 540 { | |
| 541 ForEachProvider( | |
| 542 new[] { ProviderName.SqlCe }, | |
| 543 db => AreEqual( | |
| 544 from p in | |
| 545 from p in Parent | |
| 546 select new | |
| 547 { | |
| 548 p.ParentID, | |
| 549 Sum = p.Children.Where(t => t.ParentID > 0).Sum(t => t.ParentID) / 2, | |
| 550 } | |
| 551 where p.Sum > 1 | |
| 552 select p, | |
| 553 from p in | |
| 554 from p in db.Parent | |
| 555 select new | |
| 556 { | |
| 557 p.ParentID, | |
| 558 Sum = p.Children.Where(t => t.ParentID > 0).Sum(t => t.ParentID) / 2, | |
| 559 } | |
| 560 where p.Sum > 1 | |
| 561 select p)); | |
| 562 } | |
| 563 | |
| 564 [Test] | |
| 565 public void Count2() | |
| 566 { | |
| 567 ForEachProvider( | |
| 568 new[] { ProviderName.SqlCe }, | |
| 569 db => AreEqual( | |
| 570 from p in | |
| 571 from p in Parent | |
| 572 select new Parent | |
| 573 { | |
| 574 ParentID = p.ParentID, | |
| 575 Value1 = p.Children.Where(t => t.ParentID > 0).Sum(t => t.ParentID) / 2, | |
| 576 } | |
| 577 where p.Value1 > 1 | |
| 578 select p, | |
| 579 from p in | |
| 580 from p in db.Parent | |
| 581 select new Parent | |
| 582 { | |
| 583 ParentID = p.ParentID, | |
| 584 Value1 = p.Children.Where(t => t.ParentID > 0).Sum(t => t.ParentID) / 2, | |
| 585 } | |
| 586 where p.Value1 > 1 | |
| 587 select p)); | |
| 588 } | |
| 589 | |
| 590 [Test] | |
| 591 public void Count3() | |
| 592 { | |
| 593 ForEachProvider( | |
| 594 new[] { ProviderName.SqlCe }, | |
| 595 db => AreEqual( | |
| 596 from p in | |
| 597 from p in Parent | |
| 598 select new | |
| 599 { | |
| 600 p.ParentID, | |
| 601 Sum = p.Children.Sum(t => t.ParentID) / 2, | |
| 602 } | |
| 603 where p.Sum > 1 | |
| 604 select p, | |
| 605 from p in | |
| 606 from p in db.Parent | |
| 607 select new | |
| 608 { | |
| 609 p.ParentID, | |
| 610 Sum = p.Children.Sum(t => t.ParentID) / 2, | |
| 611 } | |
| 612 where p.Sum > 1 | |
| 613 select p)); | |
| 614 } | |
| 615 } | |
| 616 } |
