はじめに
Twitterでフォロワーの方が困っていらしたので、
似た悩みを抱えた誰かに届きますようにと願い、記録として残します。
結論
LINQ使って最初のデータ、最後のデータ、同じ項目のカウントができます。
- 最初のデータ取得
どうぶつひょうdt.AsEnumerable().Where(Function (animal) animal("動物名").ToString = "ごりら").First
- 最後のデータ取得
どうぶつひょうdt.AsEnumerable().Where(Function (animal) animal("動物名").ToString = "ごりら").Last
- カウント
どうぶつひょうdt.AsEnumerable().Where(Function (animal) animal("動物名").ToString = "ごりら").Count.ToString
実際にやってみた
改めてみるとやべー表ですが、ご容赦ください。
この中から
- 最初のゴリラのデータ
- 最後のゴリラのデータ
- ゴリラのカウント
を行いたいと思います。
最初と最後のデータがわかりやすくなるように、備考に最初のデータ、最後のデータの旨と、ゴリラに対する無駄知識を記載しました。
実装
うごかした結果
ちゃんと最初と最後のデータ、
それからゴリラが何頭いるかが出力できました。
備考
抽出したDataRowは元のDataTableに属しているため、そのまま普通に別DTに行追加しようとするとエラーが出ることがあります。(この行は既に別のテーブルに属しています。)
今回はそれを回避するために、ImportRowメソッドを使っています。
参考に、プロパティを記載しておきます。
また、今回は単純にFirst、Lastで実装しましたが、
FirstOrDefault、LastOrDefaultのほうがいい場合もあるかと思いますので、ケースバイケースで対応いただくといいかもしれません。
参考文献
おわりに
データテーブルの操作はハマると結構時間とられるので、
何かの役に立てていただければ幸甚に存じます。