回答編集履歴
2
追記
test
CHANGED
@@ -197,3 +197,11 @@
|
|
197
197
|
|
198
198
|
|
199
199
|
また butto2 を押すことにより、選択中の行が削除されます。
|
200
|
+
|
201
|
+
|
202
|
+
|
203
|
+
### 追記
|
204
|
+
|
205
|
+
|
206
|
+
|
207
|
+
なお、実行時に列の入れ替えを可能にするには、AllowUserToOrderColumns プロパティを true にしてください。そうすると、ヘッダをドラッグすることで入れ替えることができるようになります。
|
1
修正
test
CHANGED
@@ -5,50 +5,6 @@
|
|
5
5
|
|
6
6
|
|
7
7
|
それからソースを次のように書き換えます。
|
8
|
-
|
9
|
-
読み込みと同時に dataGridView1 の操作をしていましたが、読み込みと操作は別のメソッドに分けた方がいいため、分けました。今回は手を抜いて DataTable を返すようにしましたが、DataTable は以降使わないので専用のクラスを作った方が拡張性が増します。
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
button1 を押すことにより、データが読み込まれ、名前に「田」の付く人のみ選択されます。カラムは生息地と名前のみで、この順番で表示されます。この詳細は LINQ を調べてください。
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
この中で難しいのは次の行ではないかと思います。
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
```C#
|
22
|
-
|
23
|
-
.Where(a => a.Field<string>("名前")?.Contains("田") ?? false)
|
24
|
-
|
25
|
-
```
|
26
|
-
|
27
|
-
`?.` は [Null 条件演算子](https://docs.microsoft.com/ja-jp/dotnet/csharp/language-reference/operators/member-access-operators#null-conditional-operators--and-)、`??` は [null 合体演算子](https://docs.microsoft.com/ja-jp/dotnet/csharp/language-reference/operators/null-coalescing-operator) で、ともに null 安全のために使われます。
|
28
|
-
|
29
|
-
このコードは下記と同じです。
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
```C#
|
34
|
-
|
35
|
-
.Where(a =>
|
36
|
-
|
37
|
-
{
|
38
|
-
|
39
|
-
var name = a.Field<string>("名前");
|
40
|
-
|
41
|
-
if (name == null) return false;
|
42
|
-
|
43
|
-
return name.Contains("田");
|
44
|
-
|
45
|
-
}
|
46
|
-
|
47
|
-
```
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
また butto2 を押すことにより、選択中の行が削除されます。
|
52
8
|
|
53
9
|
|
54
10
|
|
@@ -195,3 +151,49 @@
|
|
195
151
|
|
196
152
|
|
197
153
|
```
|
154
|
+
|
155
|
+
|
156
|
+
|
157
|
+
元のコードでは読み込みと同時に dataGridView1 の操作をしていましたが、読み込みと操作は別のメソッドに分けた方がいいため、分けました。今回は手を抜いて DataTable を返すようにしましたが、DataTable は以降使わないので専用のクラスを作った方が拡張性が増します。
|
158
|
+
|
159
|
+
|
160
|
+
|
161
|
+
button1 を押すことにより、データが読み込まれ、名前に「田」の付く人のみ選択されます。カラムは生息地と名前のみで、この順番で表示されます。この詳細は LINQ を調べてください。
|
162
|
+
|
163
|
+
|
164
|
+
|
165
|
+
この中で難しいのは次の行ではないかと思います。
|
166
|
+
|
167
|
+
|
168
|
+
|
169
|
+
```C#
|
170
|
+
|
171
|
+
.Where(a => a.Field<string>("名前")?.Contains("田") ?? false)
|
172
|
+
|
173
|
+
```
|
174
|
+
|
175
|
+
`?.` は [Null 条件演算子](https://docs.microsoft.com/ja-jp/dotnet/csharp/language-reference/operators/member-access-operators#null-conditional-operators--and-)、`??` は [null 合体演算子](https://docs.microsoft.com/ja-jp/dotnet/csharp/language-reference/operators/null-coalescing-operator) で、ともに null 安全のために使われます。
|
176
|
+
|
177
|
+
このコードは下記と同じです。
|
178
|
+
|
179
|
+
|
180
|
+
|
181
|
+
```C#
|
182
|
+
|
183
|
+
.Where(a =>
|
184
|
+
|
185
|
+
{
|
186
|
+
|
187
|
+
var name = a.Field<string>("名前");
|
188
|
+
|
189
|
+
if (name == null) return false;
|
190
|
+
|
191
|
+
return name.Contains("田");
|
192
|
+
|
193
|
+
}
|
194
|
+
|
195
|
+
```
|
196
|
+
|
197
|
+
|
198
|
+
|
199
|
+
また butto2 を押すことにより、選択中の行が削除されます。
|