私はRoles
以下を引き出そうとしていますIEnumerable<KeyValuePair<int, string>>
<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;
}
私の質問は、この Linq ステートメントの遅延実行に関するものです。この ProjectContact を返すとき、Linq ステートメントはまだ実行されていないと理解しています。誰かがロールにアクセスしようとしたときではなく、このメソッドで実行されるように、このステートメントの実行を強制する方法はありますか? .Count() を呼び出すことでステートメントの実行を強制できると思いますが、もっと良い方法があるはずです。