ですから、私はまだLINQに慣れていないので、我慢してください。セッション変数をチェックしようとしていますが、変数名に「Selected」という名前のキーが含まれていない場合は、その値をnullに設定します。
これは私が持っているものですが、おそらく私は近くにいません:
Session.Keys.Cast<string>().Where(k => !k.Contains("Selected")).ToList().ForEach(k => k = null);
助けてくれてありがとう。
あなたが持っているLINQはキーをnullに設定しています。これが実際に値を設定するために必要なものだと思います。
Session.Keys.Cast<string>()
.Where(k => !k.Contains("Selected"))
.ToList()
.ForEach(k => Session[k] = null);
^
これが完全に拡張されたLINQフォームです
Session.Keys
.Cast<string>()
.Where(k => !k.Contains("Selected")
.ToList()
.ForEach(k => Session[k] = null);
この特定のケースでは、LINQが混在しforeachていて、はるかに読みやすくなっています。
foreach (var key in Session.Keys.Cast<string>().Where(k => !k.Contains("Selected").ToList())) {
Session[key] = null;
}
代替の、より機能的なソリューションは次のとおりです。
Session = Session.ToDictionary(it => it.Key,
it => (it.Key as string).Contains("Selected") ? it.Value : null);
トレードオフは、新しい辞書を作成することです。