0
|
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 }
|