annotate UnitTests/Linq/CountTest.cs @ 0:f990fcb411a9

Копия текущей версии из github
author cin
date Thu, 27 Mar 2014 21:46:09 +0400
parents
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.Linq;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4 using BLToolkit.Data.DataProvider;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5 using BLToolkit.Data.Linq;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6 using NUnit.Framework;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8 namespace Data.Linq
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
9 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
10 [TestFixture]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
11 public class CountTest : TestBase
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
12 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
13 [Test]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
14 public void Count1()
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
15 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
16 ForEachProvider(db => Assert.AreEqual(
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
17 Parent.Count(),
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
18 db.Parent.Count()));
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
19 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
20
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
21 [Test]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
22 public void Count2()
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
23 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
24 ForEachProvider(db => Assert.AreEqual(
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
25 Parent.Count(p => p.ParentID > 2),
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
26 db.Parent.Count(p => p.ParentID > 2)));
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
27 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
28
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
29 [Test]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
30 public void Count3()
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
31 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
32 ForEachProvider(db => AreEqual(
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
33 from p in Parent select p.Children.Count(),
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
34 from p in db.Parent select p.Children.Count()));
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
35 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
36
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
37 [Test]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
38 public void Count4()
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
39 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
40 ForEachProvider(db => AreEqual(
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
41 from p in Parent select Child.Count(),
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
42 from p in db.Parent select db.Child.Count()));
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
43 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
44
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
45 [Test]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
46 public void Count5()
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
47 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
48 ForEachProvider(db => Assert.AreEqual(
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
49 (from ch in Child group ch by ch.ParentID).Count(),
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
50 (from ch in db.Child group ch by ch.ParentID).Count()));
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
51 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
52
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
53 [Test]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
54 public void Count6()
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
55 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
56 ForEachProvider(db => Assert.AreEqual(
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
57 (from ch in Child group ch by ch.ParentID).Count(g => g.Key > 2),
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
58 (from ch in db.Child group ch by ch.ParentID).Count(g => g.Key > 2)));
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
59 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
60
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
61 [Test]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
62 public void Count7()
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
63 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
64 ForEachProvider(new[] { ProviderName.SqlCe }, db => AreEqual(
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
65 from p in Parent where p.Children.Count > 2 select p,
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
66 from p in db.Parent where p.Children.Count > 2 select p));
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
67 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
68
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
69 [Test]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
70 public void SubQueryCount([IncludeDataContexts("Sql2008", "Sql2012")] string context)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
71 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
72 using (var db = new TestDbManager(context))
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
73 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
74 AreEqual(
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
75 from p in Parent
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
76 select Parent.Where(t => t.ParentID == p.ParentID).Count()
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
77 ,
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
78 from p in db.Parent
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
79 //select Sql.AsSql(db.Parent.Count()));
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
80 select Sql.AsSql(db.GetParentByID(p.ParentID).Count()));
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
81 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
82 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
83
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
84 [Test]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
85 public void GroupBy1()
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
86 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
87 var expected =
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
88 from ch in Child
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
89 group ch by ch.ParentID into g
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
90 select g.Count(ch => ch.ChildID > 20);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
91
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
92 ForEachProvider(db => AreEqual(expected,
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
93 from ch in db.Child
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
94 group ch by ch.ParentID into g
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
95 select g.Count(ch => ch.ChildID > 20)));
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
96 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
97
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
98 [Test]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
99 public void GroupBy101()
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
100 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
101 var expected =
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
102 from ch in Child
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
103 group ch by ch.ParentID into g
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
104 select g.Count();
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
105
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
106 ForEachProvider(db => AreEqual(expected,
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
107 from ch in db.Child
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
108 group ch by ch.ParentID into g
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
109 select g.Count()));
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
110 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
111
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
112 [Test]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
113 public void GroupBy102()
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
114 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
115 ForEachProvider(new[] { ProviderName.SqlCe }, db => AreEqual(
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
116 from ch in Child
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
117 group ch by ch.ParentID into g
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
118 select new
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
119 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
120 ID1 = g.Max (ch => ch.ChildID),
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
121 ID2 = g.Count(ch => ch.ChildID > 20) + 1,
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
122 ID3 = g.Count(ch => ch.ChildID > 20),
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
123 ID4 = g.Count(ch => ch.ChildID > 10),
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
124 },
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
125 from ch in db.Child
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
126 group ch by ch.ParentID into g
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
127 select new
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
128 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
129 ID1 = g.Max (ch => ch.ChildID),
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
130 ID2 = g.Count(ch => ch.ChildID > 20) + 1,
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
131 ID3 = g.Count(ch => ch.ChildID > 20),
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
132 ID4 = g.Count(ch => ch.ChildID > 10),
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
133 }));
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
134 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
135
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
136 [Test]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
137 public void GroupBy103()
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
138 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
139 var expected =
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
140 from ch in Child
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
141 group ch by new { Parent = ch.ParentID, ch.ChildID } into g
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
142 select g.Count(ch => ch.ChildID > 20);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
143
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
144 ForEachProvider(db => AreEqual(expected,
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
145 from ch in db.Child
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
146 group ch by new { Parent = ch.ParentID, ch.ChildID } into g
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
147 select g.Count(ch => ch.ChildID > 20)));
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
148 }
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 GroupBy21([DataContexts] string context)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
153 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
154 var n = 1;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
155
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
156 using (var db = GetDataContext(context))
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
157 AreEqual(
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
158 from ch in
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
159 from ch in Child select new { ParentID = ch.ParentID + 1, ch.ChildID }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
160 where ch.ParentID + 1 > n
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
161 group ch by ch into g
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
162 select g.Count(p => p.ParentID < 3),
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
163 from ch in
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
164 from ch in db.Child select new { ParentID = ch.ParentID + 1, ch.ChildID }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
165 where ch.ParentID + 1 > n
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
166 group ch by ch into g
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
167 select g.Count(p => p.ParentID < 3));
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
168 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
169
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
170 [Test]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
171 public void GroupBy22()
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
172 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
173 var n = 1;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
174
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
175 var expected =
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
176 from ch in
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
177 from ch in Child select new { ParentID = ch.ParentID + 1, ch.ChildID }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
178 where ch.ParentID + 1 > n
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
179 group ch by new { ch.ParentID } into g
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
180 select g.Count(p => p.ParentID < 3);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
181
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
182 ForEachProvider(db => AreEqual(expected,
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
183 from ch in
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
184 from ch in db.Child select new { ParentID = ch.ParentID + 1, ch.ChildID }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
185 where ch.ParentID + 1 > n
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
186 group ch by new { ch.ParentID } into g
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
187 select g.Count(p => p.ParentID < 3)));
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
188 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
189
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
190 [Test]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
191 public void GroupBy23()
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
192 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
193 ForEachProvider(new[] { ProviderName.SqlCe, "Oracle", "DevartOracle", "Sql2000", ProviderName.Sybase, ProviderName.Access }, db => AreEqual(
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
194 from p in
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
195 from p in Parent select new { ParentID = p.ParentID + 1, p.Value1 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
196 where p.ParentID + 1 > 1
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
197 group p by new { p.Value1 } into g
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
198 select g.Count(p => p.ParentID < 3),
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
199 from p in
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
200 from p in db.Parent select new { ParentID = p.ParentID + 1, p.Value1 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
201 where p.ParentID + 1 > 1
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
202 group p by new { p.Value1 } into g
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
203 select g.Count(p => p.ParentID < 3)));
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 GroupBy3()
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
208 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
209 var expected =
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
210 from ch in
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
211 from ch in Child select new { ParentID = ch.ParentID + 1, ch.ChildID }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
212 where ch.ParentID - 1 > 0
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
213 group ch by new { ch.ParentID } into g
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
214 select new
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
215 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
216 g.Key.ParentID,
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
217 ChildMin = g.Min(p => p.ChildID),
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
218 ChildCount = g.Count(p => p.ChildID > 25)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
219 };
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
220
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
221 ForEachProvider(db => AreEqual(expected,
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
222 from ch in
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
223 from ch in db.Child select new { ParentID = ch.ParentID + 1, ch.ChildID }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
224 where ch.ParentID - 1 > 0
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
225 group ch by new { ch.ParentID } into g
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
226 select new
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
227 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
228 g.Key.ParentID,
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
229 ChildMin = g.Min(p => p.ChildID),
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
230 ChildCount = g.Count(p => p.ChildID > 25)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
231 }));
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 GroupBy4()
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
236 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
237 var expected = Child.Count();
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
238
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
239 ForEachProvider(db =>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
240 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
241 var result = db.Child.Count();
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
242 Assert.AreEqual(expected, result);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
243 });
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
244 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
245
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
246 [Test]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
247 public void GroupBy5()
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
248 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
249 ForEachProvider(new[] { ProviderName.SqlCe }, db => AreEqual(
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
250 from ch in Child
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
251 group ch by ch.ParentID into g
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
252 select new
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
253 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
254 ID1 = g.Max (ch => ch.ChildID),
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
255 ID2 = g.Count(ch => ch.ChildID > 20) + 1,
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
256 ID3 = g.Count(ch => ch.ChildID > 20),
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
257 ID4 = g.Count(ch => ch.ChildID > 10),
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
258 },
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
259 from ch in db.Child
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
260 group ch by ch.ParentID into g
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
261 select new
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
262 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
263 ID1 = g.Max (ch => ch.ChildID),
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
264 ID2 = g.Count(ch => ch.ChildID > 20) + 1,
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
265 ID3 = g.Count(ch => ch.ChildID > 20),
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
266 ID4 = g.Count(ch => ch.ChildID > 10),
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 GroupBy6()
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
272 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
273 ForEachProvider(db => Assert.AreEqual(
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
274 (from ch in Child group ch by ch.ParentID).Count(),
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
275 (from ch in db.Child group ch by ch.ParentID).Count()));
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
276 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
277
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
278 [Test]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
279 public void GroupBy7()
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
280 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
281 ForEachProvider(db => AreEqual(
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
282 from ch in Child
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
283 group ch by ch.ParentID into g
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
284 select new
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
285 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
286 ID1 = g.Count(),
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
287 ID2 = g.Max (ch => ch.ChildID),
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
288 },
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
289 from ch in db.Child
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
290 group ch by ch.ParentID into g
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
291 select new
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
292 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
293 ID1 = g.Count(),
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
294 ID2 = g.Max (ch => ch.ChildID),
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
295 }));
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
296 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
297
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
298 [Test]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
299 public void GroupByWhere()
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
300 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
301 var expected = Child.Count(ch => ch.ChildID > 20);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
302 Assert.AreNotEqual(0, expected);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
303
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
304 ForEachProvider(db =>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
305 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
306 var result = db.Child.Count(ch => ch.ChildID > 20);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
307 Assert.AreEqual(expected, result);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
308 });
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
309 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
310
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
311 [Test]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
312 public void GroupByWhere1()
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
313 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
314 ForEachProvider(db => AreEqual(
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
315 from ch in Child
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
316 group ch by ch.ParentID into g
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
317 where g.Key > 2
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
318 select g.Key,
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
319 from ch in db.Child
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
320 group ch by ch.ParentID into g
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
321 where g.Key > 2
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
322 select g.Key));
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
323 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
324
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
325 [Test]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
326 public void GroupByWhere2()
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
327 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
328 ForEachProvider(db => AreEqual(
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
329 from ch in Child
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
330 group ch by ch.ParentID into g
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
331 where g.Count() > 2
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
332 select g.Key,
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
333 from ch in db.Child
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
334 group ch by ch.ParentID into g
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
335 where g.Count() > 2
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
336 select g.Key));
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
337 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
338
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
339 [Test]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
340 public void GroupByWhere201()
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
341 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
342 ForEachProvider(new[] { ProviderName.SqlCe }, db => AreEqual(
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
343 from ch in Child
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
344 group ch by ch.ParentID into g
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
345 where g.Count(ch => ch.ChildID > 20) > 2
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
346 select g.Key,
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
347 from ch in db.Child
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
348 group ch by ch.ParentID into g
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
349 where g.Count(ch => ch.ChildID > 20) > 2
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
350 select g.Key));
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
351 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
352
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
353 [Test]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
354 public void GroupByWhere202()
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
355 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
356 ForEachProvider(new[] { ProviderName.SqlCe }, db => AreEqual(
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
357 from ch in Child
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
358 group ch by ch.ParentID into g
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
359 where g.Count(ch => ch.ChildID > 20) > 2 || g.Count(ch => ch.ChildID == 20) > 2
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
360 select g.Key,
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
361 from ch in db.Child
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
362 group ch by ch.ParentID into g
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
363 where g.Count(ch => ch.ChildID > 20) > 2 || g.Count(ch => ch.ChildID == 20) > 2
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
364 select g.Key));
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
365 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
366
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
367 [Test]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
368 public void GroupByWhere203()
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
369 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
370 ForEachProvider(new[] { ProviderName.SqlCe }, db => AreEqual(
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
371 from ch in Child
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
372 group ch by ch.ParentID into g
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
373 where g.Count(ch => ch.ChildID > 20) > 2 || g.Key > 2
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
374 select g.Key,
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
375 from ch in db.Child
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
376 group ch by ch.ParentID into g
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
377 where g.Count(ch => ch.ChildID > 20) > 2 || g.Key > 2
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
378 select g.Key));
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
379 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
380
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
381 [Test]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
382 public void GroupByWhere3()
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
383 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
384 ForEachProvider(db => AreEqual(
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
385 from ch in Child
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
386 group ch by ch.ParentID into g
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
387 where g.Count() > 2 && g.Key < 5
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
388 select g.Key,
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
389 from ch in db.Child
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
390 group ch by ch.ParentID into g
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
391 where g.Count() > 2 && g.Key < 5
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
392 select g.Key));
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
393 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
394
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
395 [Test]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
396 public void GroupByWhere301()
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
397 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
398 ForEachProvider(db => AreEqual(
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
399 from ch in Child
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
400 group ch by ch.ParentID into g
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
401 where g.Count() > 3 || g.Key == 1
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
402 select g.Key,
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
403 from ch in db.Child
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
404 group ch by ch.ParentID into g
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
405 where g.Count() > 3 || g.Key == 1
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
406 select g.Key));
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
407 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
408
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
409 [Test]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
410 public void GroupByWhere4()
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
411 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
412 ForEachProvider(db => AreEqual(
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
413 from ch in GrandChild1
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
414 group ch by ch.Parent into g
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
415 where g.Count() > 2
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
416 select g.Key.ParentID
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
417 ,
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
418 from ch in db.GrandChild1
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
419 group ch by ch.Parent into g
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
420 where g.Count() > 2
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
421 select g.Key.ParentID));
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
422 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
423
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
424 [Test]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
425 public void SubQuery1()
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
426 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
427 ForEachProvider(db => AreEqual(
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
428 from p in Parent
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
429 where p.ParentID != 5
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
430 select new { p.ParentID, Count = p.Children.Where(c => c.ParentID == p.ParentID && c.ChildID != 0m).Count() },
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
431 from p in db.Parent
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
432 where p.ParentID != 5
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
433 select new { p.ParentID, Count = p.Children.Where(c => c.ParentID == p.ParentID && c.ChildID != 0m).Count() }));
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
434 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
435
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
436 [Test]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
437 public void SubQuery2()
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
438 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
439 ForEachProvider(db => AreEqual(
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
440 from p in Parent
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
441 where p.ParentID != 5
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
442 select new { Count = p.Value1 == null ? p.Children.Count : p.Children.Count(c => c.ParentID == p.ParentID) },
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
443 from p in db.Parent
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
444 where p.ParentID != 5
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
445 select new { Count = p.Value1 == null ? p.Children.Count : p.Children.Count(c => c.ParentID == p.ParentID) }));
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 SubQuery3()
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
450 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
451 ForEachProvider(db => AreEqual(
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
452 from p in Parent
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
453 where p.ParentID != 5
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
454 select new { Count = p.Value1 == null ? p.Children.Count() : p.Children.Count(c => c.ParentID == p.ParentID) },
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
455 from p in db.Parent
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
456 where p.ParentID != 5
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
457 select new { Count = p.Value1 == null ? p.Children.Count() : p.Children.Count(c => c.ParentID == p.ParentID) }));
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
458 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
459
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
460 [Test]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
461 public void SubQuery4()
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
462 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
463 ForEachProvider(db => AreEqual(
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
464 from p in Parent select new { Count = Parent.Count(p1 => p1.ParentID == p.ParentID) },
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
465 from p in db.Parent select new { Count = db.Parent.Count(p1 => p1.ParentID == p.ParentID) }));
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
466 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
467
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
468 [Test]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
469 public void SubQuery5()
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
470 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
471 ForEachProvider(db => AreEqual(
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
472 from p in Parent select new { Count = Parent.Where(p1 => p1.ParentID == p.ParentID).Count() },
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
473 from p in db.Parent select new { Count = db.Parent.Where(p1 => p1.ParentID == p.ParentID).Count() }));
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
474 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
475
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
476 [Test]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
477 public void SubQuery6()
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
478 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
479 ForEachProvider(new[] { ProviderName.SqlCe, ProviderName.SQLite, ProviderName.Sybase }, db => AreEqual(
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
480 Parent.Take(5).OrderByDescending(p => p.ParentID).Select(p => p.Children.Count()),
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
481 db.Parent.Take(5).OrderByDescending(p => p.ParentID).Select(p => p.Children.Count())));
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
482 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
483
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
484 [Test]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
485 public void SubQuery7()
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
486 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
487 ForEachProvider(
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
488 new[] { ProviderName.SqlCe, "Oracle", ProviderName.Sybase, ProviderName.Access }, ///// Fix It
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
489 db => AreEqual(
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
490 from p in Parent select Child.Count(c => c.Parent == p),
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
491 from p in db.Parent select db.Child.Count(c => c.Parent == p)));
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
492 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
493
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
494 [Test]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
495 public void SubQueryMax1()
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
496 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
497 ForEachProvider(
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
498 db => Assert.AreEqual(
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
499 Parent.Max(p => Child.Count(c => c.Parent.ParentID == p.ParentID)),
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
500 db.Parent.Max(p => db.Child.Count(c => c.Parent.ParentID == p.ParentID))));
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
501 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
502
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
503 [Test]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
504 public void SubQueryMax2()
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
505 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
506 ForEachProvider(
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
507 db => Assert.AreEqual(
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
508 Parent.Max(p => p.Children.Count()),
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
509 db.Parent.Max(p => p.Children.Count())));
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
510 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
511
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
512 [Test]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
513 public void GroupJoin1()
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
514 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
515 ForEachProvider(db => AreEqual(
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
516 from p in Parent
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
517 join c in Child on p.ParentID equals c.ParentID into gc
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
518 join g in GrandChild on p.ParentID equals g.ParentID into gg
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
519 select new
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
520 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
521 Count1 = gc.Count(),
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
522 Count2 = gg.Count()
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
523 },
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
524 from p in db.Parent
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
525 join c in db.Child on p.ParentID equals c.ParentID into gc
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
526 join g in db.GrandChild on p.ParentID equals g.ParentID into gg
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
527 select new
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
528 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
529 Count1 = gc.Count(),
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
530 Count2 = gg.Count()
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
531 }));
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
532 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
533
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
534 [Test]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
535 public void GroupJoin2()
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
536 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
537 ForEachProvider(db => AreEqual(
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
538 from p in Parent
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
539 join c in Child on p.ParentID equals c.ParentID into gc
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
540 join g in GrandChild on p.ParentID equals g.ParentID into gg
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
541 let gc1 = gc
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
542 let gg1 = gg
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
543 select new
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
544 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
545 Count1 = gc1.Count(),
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
546 Count2 = gg1.Count()
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
547 } ,
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
548 from p in db.Parent
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
549 join c in db.Child on p.ParentID equals c.ParentID into gc
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
550 join g in db.GrandChild on p.ParentID equals g.ParentID into gg
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
551 let gc1 = gc
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
552 let gg1 = gg
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
553 select new
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
554 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
555 Count1 = gc.Count(),
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
556 Count2 = gg.Count()
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
557 }));
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
558 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
559
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
560 [Test]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
561 public void GroupJoin3()
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
562 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
563 ForEachProvider(db => AreEqual(
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
564 from p in Parent
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
565 join c in Child on p.ParentID equals c.ParentID into gc
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
566 select new
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
567 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
568 Count1 = gc.Count(),
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
569 },
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
570 from p in db.Parent
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
571 join c in db.Child on p.ParentID equals c.ParentID into gc
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
572 select new
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
573 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
574 Count1 = gc.Count(),
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
575 }));
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
576 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
577
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
578 [Test]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
579 public void GroupJoin4()
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
580 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
581 ForEachProvider(db => AreEqual(
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
582 from p in Parent
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
583 join c in Child on p.ParentID equals c.ParentID into gc
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
584 select new
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
585 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
586 Count1 = gc.Count() + gc.Count(),
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
587 },
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
588 from p in db.Parent
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
589 join c in db.Child on p.ParentID equals c.ParentID into gc
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
590 select new
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
591 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
592 Count1 = gc.Count() + gc.Count(),
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
593 }));
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
594 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
595 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
596 }