有没有好看的linqy分割a的方法FormCollection
into a Dictionary<string,string>
只包含那些以某个字符串开头的键?
(这个问题与this->基本相同,但是针对C#/FormCollection而不是python按以特定字符串开头的键对字典进行切片)
这是我为解决这个问题而想出的办法:
public ActionResult Save(FormCollection formCollection) {
var appSettings = new Dictionary<string, string>();
var appKeys = formCollection.AllKeys.Where(k => k.StartsWith("AppSettings."));
foreach (var key in appKeys)
{
appSettings[key] = formCollection[key];
}
...
编辑:此代码的问题是,我必须对不同的 StartsWith 字符串执行多次,因此需要创建一个“实用程序”方法来执行上述操作。
如果它可以像这样一行读取,那就太好了:
formCollection.Where(k=>k.Key.StartsWith("AppSettings.");
背景(不是解决问题所必需的):上下文是 asp.net mvc,并且是具有动态字段字典的表单。
这也类似于这个问题——返回带有前缀的 FormCollection 项目- 但不完全相同。
读完这个答案后如何从具有复杂键的 FormCollection 构建 C# 对象- 我开始怀疑是否最好不要使用表单发布,而是发送 JSON。
如果您正在寻找一种“好”的方式来获取现有字典,并为键的子集生成一个包含键+值副本的新字典,一些 LINQ 代码可以很好地完成此操作:
var appSettings = formCollection.AllKeys
.Where(k => k.StartsWith("AppSettings."))
.ToDictionary(k => k, k => formCollection[k]);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)