所以我对 LINQ 还是比较陌生,所以请耐心等待。我正在尝试检查会话变量,如果变量名称不包含名称为“Selected”的键,则将其值设置为 null。
这就是我所拥有的,尽管我可能不接近:
Session.Keys.Cast<string>().Where(k => !k.Contains("Selected")).ToList().ForEach(k => k = null);
感谢您的帮助。
您拥有的 LINQ 将密钥设置为空。我相信这是您实际设置值所需的:
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);
权衡是它创建了一个新字典。