大写C#KeyValuePairs系列中的所有键

spb*_*spb 0 c# json json.net keyvaluepair

我有一个JSON对象列表,每个对象我都在迭代,我只想处理其中的所有KeyValuePairs,以便键是大写的,然后返回修改后的对象.

这就是我的尝试:

 public static List<JObject> normalizeKeys(List<JObject> jObjList)
    {
        jObjList.ForEach(jobj => {
            foreach(var kvp in jobj)
            {
                kvp.Key = kvp.Key.ToUpper();
            }
        });

        return jObjList;

    }
Run Code Online (Sandbox Code Playgroud)

但它没有执行,而是我得到KeyValuePair<string, JToken>.Key cannot be assigned to -- it is readonly.有没有人有任何建议如何完成我所追求的?

Eri*_*ert 9

虽然给定的答案有效,但我倾向于说它既没有尽可能优雅,也没有尽可能普遍有用.我们可以做到更多.首先,解决一个对象的问题:

public static JObject NormalizeKeys(JObject originalObject)
{
    var newObject = new JObject();
    foreach (var kvp in originalObject)
        newObject.Add(kvp.Key.ToUpper(), kvp.Value);
    return newObject;
}
Run Code Online (Sandbox Code Playgroud)

现在要解决列表的问题:

var newList = oldList.Select(x=>NormalizeKeys(x)).ToList();
Run Code Online (Sandbox Code Playgroud)

或者,甚至更短:

var newList = oldList.Select(NormalizeKeys).ToList();
Run Code Online (Sandbox Code Playgroud)

是不是比嵌套循环的东西更令人愉快?说说明如何规范化一个对象,然后说你要将该函数应用到列表中,然后就完成了.