DataTableからselectメソッドで最大値/最小値を取得したい場合

はじめまして。
DTの特定の列の最大値もしくは最小値を取得して別のDT2にコピーしたい場合、下記で実行するとmax()が使用できないというようなエラーが出ます。条件文に間違いは無いようなのですが原因は何が考えられますでしょうか。
①excel を読み込みDTを作成
②assignでDT2 = DT.Select(“col2 = MAX(col2)”).CopyToDatatable
③ DT2をexcelに出力

col1はID
col2の値は1〜100までの整数

お手数ですが、よろしくお願い致します…。

HI @cat_show

Check if this works for you
これがあなたのために働くかどうか確認してください

Let know whether it helps
それが助けるかどうかを知らせなさい

ExcelからRead Rangeで読み取った場合、DataTableの値はObject型になるため、
MAXを使用するためには数値型に変換する必要があります。

@Lahiru.Fernando さんのリンク先に記載がある通り、
以下のように記述すると最大値を持つレコードが抽出できると思います。

DT2 = DT.Select("col2 ='"+Convert.ToInt32(DT.AsEnumerable().Max(Function(row) row("col2"))).ToString+"'").CopyToDataTable

2 Likes

ありがとうございます!
きちんと動きました。

1 Like

ありがとうございます。Excelは列がobject型で取り込めるんですね
よく分かりました。

こんにちは @cat_show
私は手助けできたことをうれしく思います。あなたも解決策としてあなたのために働いた適切な答えをマークすることができます… :slight_smile:

This topic was automatically closed 3 days after the last reply. New replies are no longer allowed.