C#のList分解について

実現したいこと

Listの中身
List<string> list = new List<string>(new string[] { "A1000", "A1001", "A1002" , "A1003", "A1004" , "A1005", "A1006" , "A1007", "A1008" , "A1009", "A1010" });
・Listが全て連番の場合
A1000~A1010

Listの中身
List<string> list = new List<string>(new string[] { "A1000", "A1001", "A1002" , "A1004" , "A1006" , "A1007", "A1008" , "A1009", "A1010" });
・Listが全て連番でない場合
A1000~A1002, A1004, A1006~A1010

のように表示したいです。

発生している問題・分からないこと

全て連番の場合はnotMatchListが0かどうかをチェックし、
list.First()とlist.Last()で実現できましたが、連番でない場合はどのように実現するかが分からないためご教示お願いいたします。

該当のソースコード

・連番の場合 List<string> list = new List<string>(new string[] { "A1000", "A1001", "A1002" , "A1003", "A1004" , "A1005", "A1006" , "A1007", "A1008" , "A1009", "A1010" }); ・連番でない場合 List<string> list = new List<string>(new string[] { "A1000", "A1001", "A1002" , "A1004" , "A1006" , "A1007", "A1008" , "A1009", "A1010" }); private void CheckSerial(List<string> list) { var notMatchList = new List<string>(); string number = ""; for (int i = 0; i <= list.Count(); i++) { if (i == list.Count() - 1 ) { break; } int first = int.Parse(list[i].Substring(1, 4)); int second = int.Parse(list[i + 1].Substring(1, 4)); if (first + 1 == second) { } else { notMatchList.Add(list[i + 1]); } } //連番 if (notMatchList.Count() == 0) { string first = list.First(); string last = list.Last(); number = first + "~" + last; } }

試したこと・調べたこと

上記の詳細・結果

IndexOf()でnotMatchListのインデックスを取得し、それを活用しようとしましたが上手い方法が見つかりませんでした。

補足

特になし

コメントを投稿

0 コメント