一次元配列のList型のIndesOfは取れるのですが、
二次元配列になるとエラーになってしまいます。
//一次元配列はOK
List<string> test1 = new List<string>();
int indx1 = test1.IndexOf("chk");
// 二次元配列は"chk"がエラーとなりNG
List<List<string>> test2 = new List<List<string>>();
int indx2 = test2.IndexOf("chk");
二次元配列のList型ではインデックスを取得できないのでしょうか?
取得できるのであれば方法を教えて頂けると助かります。
よろしくお願い致します。
No.3ベストアンサー
- 回答日時:
以下は、LINQでやる場合。
カウント変数なんてのも作る必要がないから楽ですね。
ちょっとこれ以上の書き方は思いつきません。
using System.Linq;が必要です。
static void Main(string[] args)
{
List<List<string>> test2 = new List<List<string>>();
test2.Add(new List<string>() { "abc" });
test2.Add(new List<string>() { "chk" });
test2.Add(new List<string>() { "def" });
test2.Add(new List<string>() { "ghi", "chk" });
foreach (var item in test2.Select((value, index) => new { value, index }))
{
foreach (var childItem in item.value.Select((value, index) => new { value, index })
.Where(childItem => childItem.value.IndexOf("chk") >= 0))
{
Console.WriteLine(string.Format("index1:{0}, index2:{1}", item.index, childItem.index));
}
}
Console.Read();
}
回答ありがとうございます。
C#を始めたばかりで理解が足らず、一行で取得できるものがあると思っていました。
ご教授頂いた方法を解読してプログラムに組み込みたいと思います。
丁寧な説明ありがとうございました。
No.2
- 回答日時:
一度で、というのがIndexOf()のように一行で、という話ならば、そりゃムリな話です。
一行で済むようにそういうメソッドでも用意して、一行で呼び出したらいかがですか。
以下、とりあえず最もレガシーなやり方を記します。
static void Main(string[] args)
{
List<List<string>> test2 = new List<List<string>>();
test2.Add(new List<string>() { "abc" });
test2.Add(new List<string>() { "chk" });
test2.Add(new List<string>() { "def" });
test2.Add(new List<string>() { "ghi", "chk" });
var i = 0;
foreach (var item in test2)
{
var j = 0;
foreach (var childItem in item)
{
if (childItem.IndexOf("chk") >= 0)
{
Console.WriteLine(string.Format("index1:{0}, index2:{1}", i, j));
}
j++;
}
i++;
}
Console.Read();
}
}
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- PHP 配列の値の更新方法について 1 2022/08/05 09:49
- PHP PHPの構文で間違えが分からない 5 2022/07/11 16:38
- C言語・C++・C# クラスのメンバ変数を基準に並べ替えをしたい 5 2022/12/25 17:40
- PHP SQLとPHPの連結方法がわからないのでアドバイスお願い致します 1 2022/07/12 12:16
- PHP アコーディオンPHPが上手くいかない 3 2022/07/15 16:29
- PHP style.cssのjQuery条件付きcssが機能しない 4 2022/07/17 18:27
- C言語・C++・C# ポインタの型変換、どうやるんでしたっけ? 2 2022/03/28 11:00
- 大学・短大 C言語線形リストの問題です 3 2022/12/22 00:45
- PHP ファイルの書き込みについて教えて下さい。 1 2023/03/20 12:01
- PHP PHPでCSVを出力するさいに、ループの中で前の行の値を変更したい 3 2022/10/27 17:44
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
マルチスレッドで同時にFTPアッ...
-
C#で型変換
-
VBAで配列の計算
-
配列にnullを代入すると、null...
-
ループ処理の際、最後だけ","を...
-
配列をセッションに割り当てた後で
-
1~100までの数字を表示し、か...
-
Log4jで機能毎に別ファイルへ出...
-
Junitテストでvoid戻り値メッソ...
-
シャットダウンフックが呼ばれない
-
EXCEL VBA で、0から?1から?
-
テキストボックスに入力された...
-
べき乗
-
グレイコードの変換
-
C# ListBoxのインデックスの値...
-
javaで質問です。 文字列2023/2...
-
C言語のポインターに関する警告
-
IF関数でEmpty値を設定する方法。
-
Java配列でNullPointerExceptio...
-
EclipseでJava
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
C# ListBoxのアイテムをユーザ...
-
特定の文字列が一致する行から...
-
strcmp関数などでの複数の文字...
-
C#でIPアドレスの取得について
-
Delphiで改行文字の置換がうま...
-
C#での関数テーブルの作り方
-
C# JSONについて
-
C#でプロパティを使わずXMLにデ...
-
C#で型変換
-
マルチスレッドで同時にFTPアッ...
-
「指定されたキャストは有効で...
-
GridViewで複数のDropDownList...
-
【Java8以降】csvファイルの複...
-
strtokでの空文字への置き換え
-
C++ ファイルからデータを取得
-
C++のSTL mapを使用するとセグ...
-
GDI+ DrawString() で指定範囲...
-
std::stringの継承
-
string→CStringの型変換について
-
2つのリストのマージ方法について
おすすめ情報
回答ありがとうございます。
回答を待っている間に色々試したところ下記のコードでエラーは無くなりました。
int indx2 = test2[0].IndexOf("chk");
この書き方だと一行目を指定しなくてはならないので、
配列の行数がわからない場合は、行数を調べてからループするという手順になります。
一度でで何行目の何列目というインデックスは取得できないのでしょうか?