所以我还是LINQ的新手,所以请耐心等待。我正在尝试检查会话变量,如果变量名称不包含名为“Selected”的键,则将其值设置为null。
这就是我所拥有的,虽然我可能并不接近:
Session.Keys.Cast<string>().Where(k => !k.Contains("Selected")).ToList().ForEach(k => k = null);
感谢您的帮助。
答案 0 :(得分:9)
您拥有的LINQ将密钥设置为null。我相信这是您实际设置值所需要的:
Session.Keys.Cast<string>()
.Where(k => !k.Contains("Selected"))
.ToList()
.ForEach(k => Session[k] = null);
^
答案 1 :(得分:3)
这是完整展开的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;
}
答案 2 :(得分:0)
这是另一种更具功能性的解决方案:
Session = Session.ToDictionary(it => it.Key,
it => (it.Key as string).Contains("Selected") ? it.Value : null);
权衡是它创建了一个新词典。