LINQを学習していて、保留中のリクエストを使用したいのですが、この問題があります
List<string> _strs = new List<string> { "1", "2", "1", "1", "0" };
var selind = _strs.Select((name, ind) => new { indexname = name, index = ind }).Where(o => o.indexname == "1");
string sind = "";
foreach (var item in selind)
sind += item.index.ToString() + " ";
//i get 0 2 3
_strs.Add("2");
_strs.Add("1");
sind = "";
foreach (var item in selind)
sind += item.index.ToString() + " ";
//Good, i get 0 2 3 6
_strs = new List<string>() { "1" };
sind = "";
foreach (var item in selind)
sind += item.index.ToString() + " ";
//Why i get again 0 2 3 6
理由はわかりますが、2つのことを知りたいと思います。
どのようにメモリをクリアする必要がありますか?
selind = null; それとももっといい方法を教えてもらえますか?
_strsを完全に再構築した後のselindでの作業では、2つの方法があります
_strs.Clear(); _strs.Add();
またはもう一度お電話ください
selind = _strs.Select((name, ind) => new { indexname = name, index = ind }).Where(o => o.indexname == "1");
別の方法でアドバイスしてもらえますか?
前もって感謝します!