列番号の特定

データテーブル内である特定の文字列が含まれている列の番号を取得したいです。
列名は分かっていません。
どうかやり方を教えていただきたいです。

こんにちは

DataTableをdt, 特定の文字列がkeywordに格納されているとして

listRowNumber = dt.AsEnumerable.SelectMany(Function(r,i) dt.Columns.Cast(Of DataColumn).Select(Function(c) if (r(c).ToString.Contains(keyword),i,-1))).Where(Function(x) x>=0).Distinct.ToList

で行番号のリストが取得できます。

ありがとうございます。

リストではなく、int32型で出したいです。
申し訳ないですが、やり方を教えていただけますか?

こんにちは

上記はList<Int32>型で返しています。

対象が0件の場合もあれば、複数件の場合もあるかと思いますが、このような場合、どのように扱うことを想定していますでしょうか?

対象が0や複数の場合はないという想定でした。必ず一つどこかにあるという想定です。

こんにちは

データテーブル内を通じて、対象が必ず一つしかないのであれば、以下になります。
0件であったり、複数件あると、例外となります。

intVar = dt.AsEnumerable.SelectMany(Function(r,i) dt.Columns.Cast(Of DataColumn).Select(Function(c) if (r(c).ToString.Contains(keyword),i,-1))).Single(Function(x) x>=0)

ありがとうございます。
試してみたのですがkeywordに何をいれても返ってくる値が0になってしまいます。

こんにちは

可能性の一つですが、ワークフロー中に別で i という変数が使われていることはありませんでしょうか?

確認してみたのですがi は使われていませんでした。
エクセルファイルを共有します。
やりたいこととしては、ファイル1やファイル2などの列番号を特定することです。
Book.xlsx (9.0 KB)

こんにちは

すみません。行番号返していました。以下お試しください。

dt.AsEnumerable.SelectMany(Function(r) dt.Columns.Cast(Of DataColumn).Select(Function(c,i) if (r(c).ToString.Contains(keyword),i,-1))).Single(Function(x) x>=0)

できました!ありがとうございます!

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