annotate UnitTests/Linq/SetTest.cs @ 1:8f65451dc28f

Исправлена проблема с фабрикой и выборкой нескольких объектов в linq выражении
author cin
date Fri, 28 Mar 2014 01:04:56 +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 using System.Linq.Expressions;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6 using BLToolkit.Data.Linq;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8 using NUnit.Framework;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
9
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
10 namespace Data.Linq
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
11 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
12 using Model;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
13
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
14 [TestFixture]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
15 public class SetTest : TestBase
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
16 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
17 [Test]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
18 public void Except1()
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
19 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
20 ForEachProvider(db => AreEqual(
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
21 Child.Except( Child.Where(p => p.ParentID == 3)),
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
22 db.Child.Except(db.Child.Where(p => p.ParentID == 3))));
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
23 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
24
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
25 //[Test]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
26 public void Except2()
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
27 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
28 var ids = new[] { 1, 2 };
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
29
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
30 ForEachProvider(db => Assert.AreEqual(
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
31 Child.Where(c => c.GrandChildren.Select(_ => _.ParentID ?? 0).Except(ids).Count() == 0),
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
32 db.Child.Where(c => c.GrandChildren.Select(_ => _.ParentID ?? 0).Except(ids).Count() == 0)));
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
33 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
34
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
35 [Test]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
36 public void Intersect()
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
37 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
38 ForEachProvider(db => AreEqual(
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
39 Child.Intersect( Child.Where(p => p.ParentID == 3)),
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
40 db.Child.Intersect(db.Child.Where(p => p.ParentID == 3))));
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
41 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
42
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
43 [Test]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
44 public void Any1()
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
45 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
46 ForEachProvider(db => AreEqual(
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
47 Parent.Where(p => Child.Where(c => c.ParentID == p.ParentID).Any(c => c.ParentID > 3)),
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
48 db.Parent.Where(p => db.Child.Where(c => c.ParentID == p.ParentID).Any(c => c.ParentID > 3))));
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
49 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
50
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
51 [Test]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
52 public void Any2()
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
53 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
54 ForEachProvider(db => AreEqual(
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
55 Parent.Where(p => Child.Where(c => c.ParentID == p.ParentID).Any()),
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
56 db.Parent.Where(p => db.Child.Where(c => c.ParentID == p.ParentID).Any())));
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
57 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
58
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
59 [Test]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
60 public void Any3()
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
61 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
62 ForEachProvider(db => AreEqual(
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
63 Parent.Where(p => p.Children.Any(c => c.ParentID > 3)),
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
64 db.Parent.Where(p => p.Children.Any(c => c.ParentID > 3))));
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
65 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
66
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
67 [Test]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
68 public void Any31()
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
69 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
70 ForEachProvider(db => AreEqual(
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
71 Parent.Where(p => p.ParentID > 0 && p.Children.Any(c => c.ParentID > 0 && c.ParentID > 3)),
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
72 db.Parent.Where(p => p.ParentID > 0 && p.Children.Any(c => c.ParentID > 0 && c.ParentID > 3))));
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
73 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
74
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
75 [MethodExpression("SelectAnyExpression")]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
76 static bool SelectAny(Parent p)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
77 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
78 return p.Children.Any(c => c.ParentID > 0 && c.ParentID > 3);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
79 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
80
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
81 static Expression<Func<Parent,bool>> SelectAnyExpression()
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
82 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
83 return p => p.Children.Any(c => c.ParentID > 0 && c.ParentID > 3);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
84 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
85
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
86 [Test]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
87 public void Any32()
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
88 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
89 ForEachProvider(db => AreEqual(
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
90 Parent.Where(p => p.ParentID > 0 && SelectAny(p)),
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
91 db.Parent.Where(p => p.ParentID > 0 && SelectAny(p))));
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
92 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
93
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
94 [Test]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
95 public void Any4()
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
96 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
97 ForEachProvider(db => AreEqual(
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
98 Parent.Where(p => p.Children.Any()),
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
99 db.Parent.Where(p => p.Children.Any())));
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
100 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
101
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
102 [Test]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
103 public void Any5()
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
104 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
105 ForEachProvider(db => AreEqual(
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
106 Parent.Where(p => p.Children.Any(c => c.GrandChildren.Any(g => g.ParentID > 3))),
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
107 db.Parent.Where(p => p.Children.Any(c => c.GrandChildren.Any(g => g.ParentID > 3)))));
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
108 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
109
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
110 [Test]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
111 public void Any6()
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
112 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
113 ForEachProvider(db => Assert.AreEqual(
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
114 Child.Any(c => c.ParentID > 3),
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
115 db.Child.Any(c => c.ParentID > 3)));
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
116 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
117
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
118 [Test]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
119 public void Any61([DataContexts] string context)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
120 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
121 using (var db = GetDataContext(context))
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
122 Assert.AreEqual(
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
123 Child. Any(c => c.ParentID > 3),
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
124 db.GetTable<Child>().Any(c => c.ParentID > 3));
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
125 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
126
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
127 [Test]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
128 public void Any7()
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
129 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
130 ForEachProvider(db => Assert.AreEqual(Child.Any(), db.Child.Any()));
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
131 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
132
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
133 [Test]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
134 public void Any8()
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
135 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
136 ForEachProvider(db => AreEqual(
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
137 from p in Parent select Child.Select(c => c.Parent).Any(c => c == p),
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
138 from p in db.Parent select db.Child.Select(c => c.Parent).Any(c => c == p)));
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
139 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
140
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
141 [Test]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
142 public void Any9()
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
143 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
144 ForEachProvider(db => AreEqual(
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
145 from p in
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
146 from p in Parent
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
147 from g in p.GrandChildren
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
148 join c in Child on g.ChildID equals c.ChildID
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
149 select c
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
150 where !p.GrandChildren.Any(x => x.ParentID < 0)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
151 select p,
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
152 from p in
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
153 from p in db.Parent
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
154 from g in p.GrandChildren
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
155 join c in db.Child on g.ChildID equals c.ChildID
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
156 select c
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
157 where !p.GrandChildren.Any(x => x.ParentID < 0)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
158 select p));
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
159 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
160
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
161 [Test]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
162 public void Any10()
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
163 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
164 ForEachProvider(db => AreEqual(
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
165 from p in
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
166 from p in Parent
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
167 from g in p.GrandChildren
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
168 join c in Child on g.ChildID equals c.ChildID
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
169 select p
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
170 where !p.GrandChildren.Any(x => x.ParentID < 0)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
171 select p,
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
172 from p in
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
173 from p in db.Parent
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
174 from g in p.GrandChildren
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
175 join c in db.Child on g.ChildID equals c.ChildID
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
176 select p
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
177 where !p.GrandChildren.Any(x => x.ParentID < 0)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
178 select p));
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
179 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
180
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
181 [Test]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
182 public void Any11()
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
183 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
184 ForEachProvider(db => AreEqual(
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
185 from p in
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
186 from p in Parent
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
187 from g in p.GrandChildren
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
188 join c in Child on g.ChildID equals c.ChildID
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
189 join t in Types on c.ParentID equals t.ID
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
190 select c
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
191 where !p.GrandChildren.Any(x => x.ParentID < 0)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
192 select p,
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
193 from p in
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
194 from p in db.Parent
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
195 from g in p.GrandChildren
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
196 join c in db.Child on g.ChildID equals c.ChildID
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
197 join t in db.Types on c.ParentID equals t.ID
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
198 select c
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
199 where !p.GrandChildren.Any(x => x.ParentID < 0)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
200 select p));
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
201 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
202
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
203 [Test]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
204 public void Any12()
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
205 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
206 ForEachProvider(db => AreEqual(
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
207 from p in Parent where Child. Any(c => p.ParentID == c.ParentID && c.ChildID > 3) select p,
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
208 from p in db.GetTable<Parent>() where db.GetTable<Child>().Any(c => p.ParentID == c.ParentID && c.ChildID > 3) select p));
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
209 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
210
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
211 [Test]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
212 public void All1()
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
213 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
214 ForEachProvider(db => AreEqual(
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
215 Parent.Where(p => Child.Where(c => c.ParentID == p.ParentID).All(c => c.ParentID > 3)),
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
216 db.Parent.Where(p => db.Child.Where(c => c.ParentID == p.ParentID).All(c => c.ParentID > 3))));
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
217 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
218
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
219 [Test]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
220 public void All2()
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
221 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
222 ForEachProvider(db => AreEqual(
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
223 Parent.Where(p => p.Children.All(c => c.ParentID > 3)),
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
224 db.Parent.Where(p => p.Children.All(c => c.ParentID > 3))));
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
225 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
226
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
227 [Test]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
228 public void All3()
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
229 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
230 ForEachProvider(db => AreEqual(
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
231 Parent.Where(p => p.Children.All(c => c.GrandChildren.All(g => g.ParentID > 3))),
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
232 db.Parent.Where(p => p.Children.All(c => c.GrandChildren.All(g => g.ParentID > 3)))));
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
233 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
234
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
235 [Test]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
236 public void All4()
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
237 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
238 ForEachProvider(db => Assert.AreEqual(
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
239 Child.All(c => c.ParentID > 3),
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
240 db.Child.All(c => c.ParentID > 3)));
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
241 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
242
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
243 [Test]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
244 public void All5()
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
245 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
246 int n = 3;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
247
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
248 ForEachProvider(db => Assert.AreEqual(
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
249 Child.All(c => c.ParentID > n),
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
250 db.Child.All(c => c.ParentID > n)));
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
251 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
252
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
253 [Test]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
254 public void SubQueryAllAny()
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
255 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
256 ForEachProvider(db => AreEqual(
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
257 from c in Parent
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
258 where Child.Where(o => o.Parent == c).All(o => Child.Where(e => o == e).Any(e => e.ChildID > 10))
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
259 select c,
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
260 from c in db.Parent
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
261 where db.Child.Where(o => o.Parent == c).All(o => db.Child.Where(e => o == e).Any(e => e.ChildID > 10))
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
262 select c));
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
263 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
264
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
265 [Test]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
266 public void AllNestedTest([IncludeDataContexts("Northwind")] string context)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
267 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
268 using (var db = new NorthwindDB())
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
269 AreEqual(
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
270 from c in Customer
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
271 where Order.Where(o => o.Customer == c).All(o => Employee.Where(e => o.Employee == e).Any(e => e.FirstName.StartsWith("A")))
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
272 select c,
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
273 from c in db.Customer
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
274 where db.Order.Where(o => o.Customer == c).All(o => db.Employee.Where(e => o.Employee == e).Any(e => e.FirstName.StartsWith("A")))
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
275 select c);
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 ComplexAllTest([IncludeDataContexts("Northwind")] string context)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
280 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
281 using (var db = new NorthwindDB())
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
282 AreEqual(
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
283 from o in Order
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
284 where
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
285 Customer.Where(c => c == o.Customer).All(c => c.CompanyName.StartsWith("A")) ||
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
286 Employee.Where(e => e == o.Employee).All(e => e.FirstName.EndsWith("t"))
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
287 select o,
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
288 from o in db.Order
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
289 where
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
290 db.Customer.Where(c => c == o.Customer).All(c => c.CompanyName.StartsWith("A")) ||
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
291 db.Employee.Where(e => e == o.Employee).All(e => e.FirstName.EndsWith("t"))
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
292 select o);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
293 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
294
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
295 [Test]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
296 public void Contains1()
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
297 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
298 ForEachProvider(db => AreEqual(
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
299 from p in Parent select Child.Select(c => c.Parent).Contains(p),
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
300 from p in db.Parent select db.Child.Select(c => c.Parent).Contains(p)));
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
301 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
302
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
303 [Test]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
304 public void Contains2()
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
305 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
306 ForEachProvider(db => AreEqual(
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
307 from p in Parent select Child.Select(c => c.ParentID).Contains(p.ParentID),
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
308 from p in db.Parent select db.Child.Select(c => c.ParentID).Contains(p.ParentID)));
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 Contains201()
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 p in Parent select Child.Select(c => c.ParentID).Contains(p.ParentID - 1),
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
316 from p in db.Parent select db.Child.Select(c => c.ParentID).Contains(p.ParentID - 1)));
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
317 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
318
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
319 [Test]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
320 public void Contains3()
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
321 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
322 ForEachProvider(db => AreEqual(
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
323 from p in Parent where Child.Select(c => c.Parent).Contains(p) select p,
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
324 from p in db.Parent where db.Child.Select(c => c.Parent).Contains(p) select p));
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
325 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
326
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
327 [Test]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
328 public void Contains4()
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
329 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
330 ForEachProvider(db => AreEqual(
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
331 from p in Parent where Child.Select(c => c.ParentID).Contains(p.ParentID) select p,
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
332 from p in db.Parent where db.Child.Select(c => c.ParentID).Contains(p.ParentID) select p));
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
333 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
334
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
335 [Test]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
336 public void Contains5()
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
337 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
338 ForEachProvider(db => AreEqual(
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
339 from p in Parent where Child.Select(c => c.ParentID).Contains(p.ParentID + 1) select p,
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
340 from p in db.Parent where db.Child.Select(c => c.ParentID).Contains(p.ParentID + 1) select p));
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
341 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
342
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
343 [Test]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
344 public void Contains6()
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
345 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
346 var n = 1;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
347
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
348 ForEachProvider(db => AreEqual(
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
349 from p in Parent where Child.Select(c => c.ParentID).Contains(p.ParentID + n) select p,
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
350 from p in db.Parent where db.Child.Select(c => c.ParentID).Contains(p.ParentID + n) select p));
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 Contains7()
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
355 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
356 ForEachProvider(db => Assert.AreEqual(
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
357 Child.Select(c => c.ParentID).Contains(11),
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
358 db.Child.Select(c => c.ParentID).Contains(11)));
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
359 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
360
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
361 [Test]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
362 public void Contains701()
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
363 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
364 ForEachProvider(db => Assert.AreEqual(
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
365 Child.Select(c => c.Parent).Contains(new Parent { ParentID = 11, Value1 = 11}),
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
366 db.Child.Select(c => c.Parent).Contains(new Parent { ParentID = 11, Value1 = 11})));
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
367 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
368
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
369 [Test]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
370 public void Contains8()
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
371 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
372 var arr = new[] { GrandChild.ElementAt(0), GrandChild.ElementAt(1) };
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
373
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
374 ForEachProvider(db => AreEqual(
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
375 from p in Parent
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
376 join ch in Child on p.ParentID equals ch.ParentID
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
377 join gc in GrandChild on ch.ChildID equals gc.ChildID
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
378 where arr.Contains(gc)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
379 select p,
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
380 from p in db.Parent
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
381 join ch in db.Child on p.ParentID equals ch.ParentID
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
382 join gc in db.GrandChild on ch.ChildID equals gc.ChildID
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
383 where arr.Contains(gc)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
384 select p));
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
385 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
386
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
387 [Test]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
388 public void Contains801()
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
389 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
390 var arr = new[] { GrandChild.ElementAt(0), GrandChild.ElementAt(1) };
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
391
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
392 ForEachProvider(db => AreEqual(
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
393 from p in Parent
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
394 join ch in Child on p.ParentID equals ch.ParentID
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
395 join gc in GrandChild on ch.ChildID equals gc.ChildID
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
396 select new GrandChild { ParentID = 2, ChildID = ch.ChildID, GrandChildID = gc.GrandChildID } into gc
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
397 where arr.Contains(gc)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
398 select gc,
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
399 from p in db.Parent
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
400 join ch in db.Child on p.ParentID equals ch.ParentID
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
401 join gc in db.GrandChild on ch.ChildID equals gc.ChildID
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
402 select new GrandChild { ParentID = 2, ChildID = ch.ChildID, GrandChildID = gc.GrandChildID } into gc
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
403 where arr.Contains(gc)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
404 select gc));
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
405 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
406
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
407 [Test]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
408 public void Contains802()
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
409 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
410 var arr = new[] { GrandChild.ElementAt(0), GrandChild.ElementAt(1) };
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 p in Parent
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
414 join ch in Child on p.ParentID equals ch.ParentID
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
415 join gc in GrandChild on ch.ChildID equals gc.ChildID
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
416 where arr.Contains(new GrandChild { ParentID = p.ParentID, ChildID = ch.ChildID, GrandChildID = gc.GrandChildID })
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
417 select p,
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
418 from p in db.Parent
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
419 join ch in db.Child on p.ParentID equals ch.ParentID
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
420 join gc in db.GrandChild on ch.ChildID equals gc.ChildID
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
421 where arr.Contains(new GrandChild { ParentID = p.ParentID, ChildID = ch.ChildID, GrandChildID = gc.GrandChildID })
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
422 select p));
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
423 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
424
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
425 [Test]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
426 public void Contains803()
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
427 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
428 var arr = new[] { GrandChild.ElementAt(0), GrandChild.ElementAt(1) };
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
429
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
430 ForEachProvider(db => AreEqual(
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
431 from p in Parent
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
432 join ch in Child on p.ParentID equals ch.ParentID
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
433 join gc in GrandChild on ch.ChildID equals gc.ChildID
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
434 where arr.Contains(new GrandChild { ParentID = 1, ChildID = ch.ChildID, GrandChildID = gc.GrandChildID })
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
435 select p,
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
436 from p in db.Parent
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
437 join ch in db.Child on p.ParentID equals ch.ParentID
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
438 join gc in db.GrandChild on ch.ChildID equals gc.ChildID
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
439 where arr.Contains(new GrandChild { ParentID = 1, ChildID = ch.ChildID, GrandChildID = gc.GrandChildID })
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
440 select p));
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
441 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
442
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
443 [Test]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
444 public void Contains9()
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
445 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
446 var arr = Parent1.Take(2).ToArray();
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
447
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
448 ForEachProvider(db => AreEqual(
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
449 from p in Parent1 where arr.Contains(p) select p,
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
450 from p in db.Parent1 where arr.Contains(p) select p));
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
451 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
452
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
453 [Test]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
454 public void Contains10([IncludeDataContexts("Northwind")] string context)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
455 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
456 using (var db = new NorthwindDB())
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
457 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
458 var arr = new[]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
459 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
460 new Northwind.Order { OrderID = 11000 },
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
461 new Northwind.Order { OrderID = 11001 },
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
462 new Northwind.Order { OrderID = 11002 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
463 };
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
464
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
465 var q =
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
466 from e in db.Employee
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
467 from o in e.Orders
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
468 where arr.Contains(o)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
469 select new
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
470 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
471 e.FirstName,
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
472 o.OrderID,
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
473 };
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
474
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
475 q.ToList();
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
476 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
477 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
478
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
479 [Test]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
480 public void Contains11([IncludeDataContexts("Northwind")] string context)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
481 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
482 using (var db = new NorthwindDB())
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
483 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
484 var q =
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
485 from e in db.EmployeeTerritory
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
486 group e by e.Employee into g
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
487 where g.Key.EmployeeTerritories.Count() > 1
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
488 select new
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
489 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
490 g.Key.LastName,
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
491 cnt = g.Where(t => t.Employee.FirstName.Contains("an")).Count(),
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
492 };
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
493
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
494 q.ToList();
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
495 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
496 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
497
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
498 [Test]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
499 public void Contains12([IncludeDataContexts("Northwind")] string context)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
500 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
501 using (var db = new NorthwindDB())
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
502 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
503 var q =
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
504 from e in db.EmployeeTerritory
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
505 group e by e.Employee into g
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
506 where g.Key.EmployeeTerritories.Count() > 1 && g.Count() > 2
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
507 select new
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
508 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
509 g.Key.LastName,
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
510 //cnt = g.Where(t => t.Employee.FirstName.Contains("an")).Count(),
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
511 };
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
512
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
513 q.ToList();
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
514 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
515 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
516
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
517 [Test]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
518 public void Contains13([IncludeDataContexts("Northwind")] string context)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
519 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
520 using (var db = new NorthwindDB())
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
521 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
522 var arr = new[]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
523 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
524 new Northwind.EmployeeTerritory { EmployeeID = 1, TerritoryID = "01581" },
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
525 new Northwind.EmployeeTerritory { EmployeeID = 1, TerritoryID = "02116" },
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
526 new Northwind.EmployeeTerritory { EmployeeID = 1, TerritoryID = "31406" }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
527 };
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
528
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
529 var q =
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
530 from e in db.EmployeeTerritory
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
531 group e by e.EmployeeID into g
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
532 select new
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
533 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
534 g.Key,
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
535 cnt = g.Count(t => arr.Contains(t)),
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
536 };
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
537
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
538 q.ToList();
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
539 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
540 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
541
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
542 void TestContains(ITestDataContext db, Parent1 parent)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
543 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
544 Assert.AreEqual(
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
545 Parent1.Where(p => p.ParentID == 1).Contains(parent),
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
546 db.Parent1.Where(p => p.ParentID == 1).Contains(parent));
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
547 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
548
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
549 [Test]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
550 public void Contains14()
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
551 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
552 var ps = Parent1.OrderBy(p => p.ParentID).Take(2).ToArray();
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
553
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
554 ForEachProvider(db => Array.ForEach(ps, p => TestContains(db, p)));
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
555 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
556
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
557 static void GetData(ITestDataContext db, IEnumerable<int?> d)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
558 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
559 var r1 = db.GrandChild
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
560 .Where(x => d.Contains(x.ParentID))
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
561 .ToList();
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
562
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
563 foreach (var g in r1)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
564 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
565 Assert.AreEqual(d.First().Value, g.ParentID);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
566 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
567 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
568
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
569 [Test]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
570 public void TestForGroupBy()
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
571 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
572 ForEachProvider(db =>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
573 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
574 GetData(db, new List<int?> { 2 });
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
575 GetData(db, new List<int?> { 3 });
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
576 });
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
577 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
578 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
579 }