У меня есть хеш-таблица, которую я хочу обновить со второй хеш-таблицы. Для любого из ключей, которые соответствуют, я хочу скопировать значение. У меня проблема, когда я перечисляю ключи хеш-таблицы и пытаюсь привести их к строке, я получаю исключение о приведении Guid к строке. Ну, это строка, которую я хочу. Когда вы используете оператор индекса с чем-то вроде 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();
}
EDIT
Я не создаю ни одну из этих хеш-таблиц. У ключей где-то есть строки, потому что я могу вставить имя поля, как показано ниже, и получить значение поля. Я пытаюсь сделать краткий способ сделать следующее для каждого поля:
workflowProperties.Item["FirstName"] = infopathFields["FirstName"];
workflowProperties.Item["LastName"] = infopathFields["LastName"];
workflowProperties.Item["Address"] = infopathFields["Address"];
workflowProperties.Item["DOB"] = infopathFields["DOB"];
ect...
EDIT
Говорят, что в хеш-таблице используются Guids, но в ней также явно есть строка, иначе я не смог бы сделать infopathFields ["FirstName"]. Это значение в строке, которую я передаю туда, которое я хочу.