我想下面的Roles
拉出到IEnumerable<KeyValuePair<int, string>>
Linq:Xml到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()來強制執行語句,但似乎應該有更好的方法。
對不起,沒有完成的問題,它張貼!我會寫完我的問題,一分鐘:) – JSprang 2010-08-06 15:49:53
好的,問題現在在那裏。 – JSprang 2010-08-06 15:54:29
角色是IEnumerable>,對此感到遺憾。 –
JSprang
2010-08-06 15:59:05