【发布时间】:2011-08-30 20:55:24
【问题描述】:
我正在使用 C# 代码和 Tridion(CMS) 类从 Tridion 获取数据,下面是从 Tridion 获取所有出版物列表的代码。
protected void btnPublishPublicationList_Click(object sender, EventArgs e)
{
try
{
PublicationBL pubBL = new PublicationBL();
TridionCollection<Publication> pubAllList = pubBL.getAllPublicationList();
List<PublicationsBO> pubBos = new List<PublicationsBO>();
foreach (Publication pub in pubAllList)
{
if ((pub.Title.StartsWith("07"))||(pub.Title.StartsWith("08")))
{
PublicationsBO pubBO = new PublicationsBO();
pubBO.publicationID = pub.ID;
pubBO.publicationName = pub.Title;
pubBos.Add(pubBO);
}
}
pubBL.createPublicationListXML(pubBos);
}
catch (Exception ex)
{
log.Error(ex.Message);
}
}
在上面的按钮点击代码中,我使用 .net 代码并使用 Tridion 类来获取所有出版物列表如下:
TridionCollection<Publication> pubAllList = pubBL.getAllPublicationList();
我从 Tridion 快速获取我的所有出版物列表,但是当我要进行 foreach 循环时,如下所示,我的流程卡住了,需要花费大量时间。
foreach (Publication pub in pubAllList)
{
if ((pub.Title.StartsWith("07"))||(pub.Title.StartsWith("08")))
{
PublicationsBO pubBO = new PublicationsBO();
pubBO.publicationID = pub.ID;
pubBO.publicationName = pub.Title;
pubBos.Add(pubBO);
}
}
调试后我发现当调试器来到foreach (Publication pub in pubAllList) 时会花费很多时间。我认为制作 Publication 类对象需要时间,它是 Tridion 类。
请建议任何其他方式来执行此操作或建议上述代码中的错误。
谢谢。
【问题讨论】:
-
也许 TridionCollection 枚举器很糟糕?
-
这是什么意思,请指教
-
尝试通过索引或键正常迭代它(不知道这个类的性质),看看是否有任何区别。其他解释是延迟加载,如下所示。以防万一我还建议在此操作期间查看内存使用情况...