コレクションを変更しようとしているため、例外が発生しています
myList.Remove(s);
foreach
ループで繰り返しているリストを変更することはできません。foreachを参照してください- MSDN
foreach ステートメントは、System.Collections.IEnumerable または System.Collections.Generic.IEnumerable(Of T) インターフェイスを実装する配列またはオブジェクト コレクション内の各要素に対して、埋め込みステートメントのグループを繰り返します。foreach ステートメントは、コレクションを反復処理して必要な情報を取得するために使用されますが、予期しない副作用を避けるために、ソース コレクションからアイテムを追加または削除するために使用することはできません。ソース コレクションからアイテムを追加または削除する必要がある場合は、for ループを使用します。
あなたの質問について:
問題は、「comp == 1」を使用するたびに例外が発生しないことです
それはチェックに合格せず、リストがそのまま残るためです。
string.Compare
同等性をチェックしているように見えるので、なぜ を使用しているのかわかりません。
あなたは簡単に行うことができます:
myList = myList.Where(r=> r != line_to_delete).ToList();
string.Compare
大文字と小文字を区別しない比較を実行できるように使用しようとしている場合は、大文字と小文字を区別しない比較にも列挙型を使用するstring.Equalsオーバーロードを探しStringComparison
ます。
myList = myList
.Where(r => r.Equals(line_to_delete, StringComparison.InvariantCultureIgnoreCase))
.ToList();