Je suis en train de tirer le Roles
ci-dessous dans un IEnumerable<KeyValuePair<int, string>>
Linq: Xml à IEnumerable <KeyValuePair <int, string>> exécution différée?
<PROJECT PROJECT_NO="161917">
<CONTACT CLIENT_ID="030423253272735482765C" CONTACT_NO="1">
<ROLE ROLE_ID="2" ROLE_DESC="ARCHITECT" />
<ROLE ROLE_ID="5" ROLE_DESC="INTEGRATOR" />
</CONTACT>
</PROJECT>
private static ProjectContact BuildProjectContactFromXml(XElement xml)
{
ProjectContact projectContact = new ProjectContact();
projectContact.ProjectId = SafeConvert.ToInt32(xml.Attribute("PROJECT_NO").Value);
projectContact.Roles = xml.Elements()
.First()
.Elements()
.Select(role => new KeyValuePair<int, string>(
SafeConvert.ToInt32(role.Attribute("ROLE_ID").Value),
role.Attribute("ROLE_DESC").Value));
return projectContact;
}
Ma question porte sur l'exécution différée de cette déclaration LINQ. Je crois comprendre que lorsque je renvoie ce ProjectContact, l'instruction Linq n'est pas encore exécutée. Existe-t-il un moyen de forcer l'exécution de cette instruction pour qu'elle se produise dans cette méthode plutôt que lorsque quelqu'un tente d'accéder aux rôles? Je pense que je pourrais forcer l'exécution de la déclaration en appelant .Count() dessus, mais il semble qu'il devrait y avoir un meilleur moyen.
Désolé, n'était pas fini avec la question et il a posté! Je vais finir d'écrire ma question, une minute :) – JSprang
Ok, la question est là maintenant. – JSprang
Roles est un IEnumerable>, désolé à ce sujet. –
JSprang