回答編集履歴

2

追記

2017/10/31 03:42

投稿

退会済みユーザー
test CHANGED
@@ -175,3 +175,59 @@
175
175
  }
176
176
 
177
177
  ```
178
+
179
+
180
+
181
+ **【追記】**
182
+
183
+
184
+
185
+ コメント欄の追加質問の件です。
186
+
187
+
188
+
189
+ > 条件に一致したデータが複数存在した場合は既に配列に存在した場合はスキップしたい
190
+
191
+
192
+
193
+ IEnumerable<T> で T が匿名型の場合(上のコードで言うと result がそれ)は、単純に result に Distinct() メソッドを適用すれば期待通り重複のない結果が得られます。具体的には例えば、以下のようにしてください。
194
+
195
+
196
+
197
+ ```
198
+
199
+ var result = from o in orders.AsEnumerable()
200
+
201
+ join c in customers.AsEnumerable()
202
+
203
+ on o.Field<string>("CustomerID") equals c.Field<string>("CustomerID")
204
+
205
+ where o.Field<string>("ShipCity") == c.Field<string>("City")
206
+
207
+ select new
208
+
209
+ {
210
+
211
+ OrderID = o.Field<int>("OrderID"),
212
+
213
+ CompanyName = c.Field<string>("CompanyName"),
214
+
215
+ ShipCity = o.Field<string>("ShipCity")
216
+
217
+ };
218
+
219
+
220
+
221
+ result = result.Distinct(); // この行を追加
222
+
223
+ ```
224
+
225
+
226
+
227
+ なお、T にカスタムデータ型を使った場合はそう簡単には行きません。詳しくは以下の記事を見てください。
228
+
229
+
230
+
231
+ 匿名型と Distinct メソッド
232
+
233
+ [http://surferonwww.info/BlogEngine/post/2015/12/08/anonymous-type-and-distinct-method.aspx](http://surferonwww.info/BlogEngine/post/2015/12/08/anonymous-type-and-distinct-method.aspx)

1

訂正&追記

2017/10/31 03:41

投稿

退会済みユーザー
test CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
 
4
4
 
5
- なので、Microsoft が提供するサンプルデータベース Northwind の Orders, Customers テーブルから以下のクエリを使って DataTable を作り、それを Linq を使って CUstomerID が一致する条件で Inner Join し、さらに ShipCity と City が一致する条件で抽出するサンプルを書きました。
5
+ なので、Microsoft が提供するサンプルデータベース Northwind の Orders, Customers テーブルから以下のクエリを使って DataTable を作り、それを Linq を使って CustomerID が一致する条件で Inner Join し、さらに ShipCity と City が一致する条件で抽出するサンプルを書きました。
6
6
 
7
7
 
8
8
 
@@ -16,7 +16,7 @@
16
16
 
17
17
 
18
18
 
19
- コードは以下の通りです。不明な点があれば聞いてください。
19
+ コードは以下の通りです。不明な点があれば聞いてください。また、これが質問者さんのやりたいことと違う場合は、どこがどのように違うかを連絡ください。
20
20
 
21
21
 
22
22
 
@@ -158,7 +158,7 @@
158
158
 
159
159
  DataRow row = table.NewRow();
160
160
 
161
- //row["OrderID"] = item.OrderID;
161
+ row["OrderID"] = item.OrderID;
162
162
 
163
163
  row["CompanyName"] = item.CompanyName;
164
164