16640


DataGridViewに表示したデータに対し、選択したレコードを処理するメソッドと  
DataGridViewに表示した全てのレコードを処理するメソッドを共通にしたいのですが、  
タイトルの二つのCollectionはどちらかにキャストしたりできないでしょうか？  
(共通メソッドの引数を同じにできればと考えています。)

最悪、全てのレコードを処理する場合には全て選択させてDataGridViewSelectedRowCollectionを  
処理する方法もあるかと思いますが、なんかきれいじゃない気がしまして。。

お知恵を拝借できれば幸いです。


CC BY-SA 3.0
2015-09-15T10:40:10.493
16639
2015-09-15T12:28:56.130
9228
question
c# winforms
C# DataGridViewSelectedRowCollectionとDataGridViewRowCollection


それぞれの値に`.Cast<DataGridViewRow>()`を付ければ`IEnumerable<DataGridViewRow>`型にラップ出来ます。`foreach`のみであればこの型で十分です。

またリストであることが必要なのであれば、`IList`型を引数にするのが良いと思います。この場合コレクションは変換不要ですが、各要素を`DataGridViewRow`にキャストする必要があります。


CC BY-SA 3.0
2015-09-15T10:49:48.273
16640
2015-09-15T10:49:48.273
5750
16639
answer


LINQを用いてDataGridViewRowの配列に変換すれば良いでしょう。

[code]

       IList<DataGridViewRow> list = rows
        .OfType<DataGridViewRow>()  // DataGridViewRowに変換できた要素のみ通す
        .ToArray();                 // 配列化する。
    
[/code]

OfTypeと似ているものにCastがありますが、Castは、キャストできない場合に例外がスローされます。


CC BY-SA 3.0
2015-09-15T12:28:56.130
16645
2015-09-15T12:28:56.130
2207
16639
answer