gpt4 book ai didi

c# - 通过以特定字符串开头的键对 FormCollection 进行切片

转载 作者:太空狗 更新时间:2023-10-29 20:11:41 26 4
gpt4 key购买 nike

有没有很好的linqy 拆分FormCollection 的方法?进入Dictionary<string,string>只包含那些以特定字符串开头的键?

(这个问题和这个基本一样->但是针对 C#/FormCollection 而不是 python Slicing a dictionary by keys that start with a certain string )

这是我想出的办法来解决这个问题:

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.");

背景(不是解决问题所必需的): context是asp.net mvc,并且是动态字段字典的形式。

也类似这个问题-Return FormCollection items with Prefix - 但不完全一样。

并阅读了这个答案 How to build C# object from a FormCollection with complex keys - 我开始怀疑我什至不使用表单发布,而是发送 JSON 是否会更好。

最佳答案

如果您正在寻找一种“不错”的方式来获取现有字典,生成一个包含键+值副本的新字典,对于键的子集,一些 LINQ 代码可以很好地做到这一点:

var appSettings = formCollection.AllKeys
.Where(k => k.StartsWith("AppSettings."))
.ToDictionary(k => k, k => formCollection[k]);

关于c# - 通过以特定字符串开头的键对 FormCollection 进行切片,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4893147/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com