6
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

同じ項目のカウントと、同じ項目の最初と最後のデータをとる

Last updated at Posted at 2023-01-31

はじめに

Twitterでフォロワーの方が困っていらしたので、
似た悩みを抱えた誰かに届きますようにと願い、記録として残します。
image.png

結論

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

実際にやってみた

例として、こんな表を作りました。
image.png

改めてみるとやべー表ですが、ご容赦ください。
この中から

  • 最初のゴリラのデータ
  • 最後のゴリラのデータ
  • ゴリラのカウント
    を行いたいと思います。
    最初と最後のデータがわかりやすくなるように、備考に最初のデータ、最後のデータの旨と、ゴリラに対する無駄知識を記載しました。

実装

こんな感じで実装しました。
image.png

うごかした結果

ちゃんと最初と最後のデータ、
それからゴリラが何頭いるかが出力できました。
image.png

image.png

備考

抽出したDataRowは元のDataTableに属しているため、そのまま普通に別DTに行追加しようとするとエラーが出ることがあります。(この行は既に別のテーブルに属しています。)

今回はそれを回避するために、ImportRowメソッドを使っています。
参考に、プロパティを記載しておきます。
image.png

また、今回は単純にFirst、Lastで実装しましたが、
FirstOrDefault、LastOrDefaultのほうがいい場合もあるかと思いますので、ケースバイケースで対応いただくといいかもしれません。

参考文献

おわりに

データテーブルの操作はハマると結構時間とられるので、
何かの役に立てていただければ幸甚に存じます。

6
2
3

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?