我有一个哈希表,想要从第二个哈希表中更新它。对于任何匹配的键,我想要复制值。但是,当我枚举哈希表键并尝试将每个键强制转换为字符串时,我会收到有关将 Guid 强制转换为 String 的异常。其实我需要的是字符串。当您使用类似 hashtable["FirstName"] 的索引运算符时,我期望 FirstName 是键。它可能在底层使用 Guids,但我需要获取键的字符串,即键值。
private void UpdateSharePointFromInfoPath(Hashtable infopathFields)
{
// Go through all the fields on the infopath form
// Invalid Cast Exception Here
foreach (String fieldName in infopathFields.Keys)
{
// If the same field is on sharepoint
if (workflowProperties.Item.Fields.ContainsField(fieldName))
{
// Update the sharepoint field with the new value from infopath
workflowProperties.Item[fieldName] = infopathFields[fieldName];
}
}
// Commit the changes
workflowProperties.Item.Update();
}
编辑 我并没有创建这两个哈希表中的任何一个。关键字应该是字符串类型,因为我可以像以下方式一样输入字段名并获取字段值。我正在尝试为每个字段制作一种简写方式:
workflowProperties.Item["FirstName"] = infopathFields["FirstName"];
workflowProperties.Item["LastName"] = infopathFields["LastName"];
workflowProperties.Item["Address"] = infopathFields["Address"];
workflowProperties.Item["DOB"] = infopathFields["DOB"];
ect...
编辑 有人说哈希表使用 Guids,但它显然也包含一个字符串,否则我就不能使用 infopathFields["FirstName"]。 我想要的是我传递进去的字符串的值。