Comment obtenir la clé d'une table de hachage entrée
J'ai une table de hachage que je veux mettre à jour à partir d'une deuxième table de hachage. Pour l'une des clés de ce match je veux copier la valeur. Le problème que j'ai c'est quand je les énumère la table de hachage clés et essayez de lancer chacun à une chaîne, j'ai un message d'exception sur le casting d'un Guid à une Chaîne. Eh bien, c'est la chaîne que je veux. Lorsque vous utilisez l'index de l'opérateur avec quelque chose comme hashtable["Prenom"] puis-je m'attendre Prénom à la clé. Il peut utiliser Guid en dessous je suppose, mais j'ai besoin de sortir de la chaîne de la clé, la valeur de la clé.
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();
}
MODIFIER
Je ne crée pas une de ces tables de hachage. Les clés sont des chaînes de quelque part parce que je peux mettre le nom du champ comme dans la suite et obtenir la valeur du champ. Je suis en train de faire un aperçu schématique de la manière suivante pour chaque champ:
workflowProperties.Item["FirstName"] = infopathFields["FirstName"];
workflowProperties.Item["LastName"] = infopathFields["LastName"];
workflowProperties.Item["Address"] = infopathFields["Address"];
workflowProperties.Item["DOB"] = infopathFields["DOB"];
ect...
MODIFIER
Il a été dit que la table de hachage utilise le Guid, mais elle aussi a évidemment une chaîne de caractères à l'intérieur d'autre je ne serais pas capable de faire infopathFields["Prenom"]. C'est la valeur sur la chaîne je passe là-bas que je veux.
Je n'ai pas de créer les tables de hachage.
J'ai voté cela parce que je ne t'apprécie pas insulter les gens qui ont essayé de vous aider.
OriginalL'auteur Dan Revell | 2009-12-04
Vous devez vous connecter pour publier un commentaire.
Chaque élément est une paire Clé/Valeur de format DictionaryEntry
problème très commun ici
Juste un avis, cela va ignorer les Guid, qui, d'après votre question, vous ne voulez pas le faire. La ligne de string fieldName = de.Clé comme une chaîne de caractères; aura le nom du champ comme null si la clé est de type Guid. Ensuite, si l'instruction renvoie la valeur false et le Guid est ignoré. Donc je ne pense pas que cette solution est correcte.
OriginalL'auteur harryovers
La version standard de la table de hachage peut avoir différents type de clés, de sorte que la plupart de vos clés peuvent être des chaînes de caractères, mais certains de vos clés peuvent être de Guid. Je suis prêt à parier que c'est le cas et est à l'origine de votre problème. Ce qui suit petite application console illustre le problème.
Vous obtiendrez exactement la même exception que vous êtes en train de ici.
Ma suggestion pour résoudre le problème serait de passer à la suivante
OriginalL'auteur Jonathan Beerhalter
Ce qui crée la table de hachage? la clé est en fait un objet de sorte qu'il sonne comme quelque peuplées, il n'a pas de cast implicite à une chaîne
OriginalL'auteur Pharabus
Si le type des valeurs de infopathFields est un Guid, puis les types des valeurs de workflowProperties devra être de Guid. Je ne peux pas voir de l'extrait de ce workflowProperties est défini comme.
Pour convertir un Guid pour une chaîne de caractères utilisez Guid.ToString()
OriginalL'auteur James Bloomer
Les objets stockés dans la table de hachage sont Guid de l'objet, de sorte à obtenir une chaîne de caractères, vous devez appeler
ToString()
sur l'objet que vous obtenez à partir de la clé de l'énumérateur. Je voudrais également vous recommandons d'utiliser le génériqueDictionary<K,V>
classe au lieu de la table de hachage, qui permettraient de capter ce type de problèmes, au moment de la compilation plutôt que de l'exécution.OriginalL'auteur thecoop
Pour obtenir le plus grand entier de la clé à partir de la table de Hachage:
OriginalL'auteur HEMANT KUMAR