annotate UnitTests/Linq/SubQuery.cs @ 4:f757da6161a1

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