C# Foreach循环只处理了几个项目
我正在使用C#更新dynamics crm 2011中联系人的实体记录。CRM中大约有44450个联系人处于活动状态,但下面的代码片段仅适用于500个联系人。有人能告诉我出了什么问题吗C# Foreach循环只处理了几个项目,c#,dynamics-crm-2011,C#,Dynamics Crm 2011,我正在使用C#更新dynamics crm 2011中联系人的实体记录。CRM中大约有44450个联系人处于活动状态,但下面的代码片段仅适用于500个联系人。有人能告诉我出了什么问题吗 foreach (Entity item in ec.Entities) { if (item.Attributes.Contains("expirationdate")) { string temp1 = string.Empty; DateTime date;
foreach (Entity item in ec.Entities)
{
if (item.Attributes.Contains("expirationdate"))
{
string temp1 = string.Empty;
DateTime date;
date = Convert.ToDateTime(item.Attributes["expirationdate"]);
temp1 = date.Date.ToString("d");
item.Attributes["expirationdate_hidden"] = temp1;
}
service.Update(item);
}
您可能认为它只在
ec.Entities
中循环,因为您计算了包含expirationdate
的对象数,然后用for循环替换foreach,看看是否使用了500多个项。代码:
for(int i=0;i
将代码替换为以下内容
如果仅迭代500次,则可能会出现以下原因
背后
- retrievemultiple仅返回500条记录。只有在可以同时检索的最大记录数为 在crm设置中,时间可以设置为500
我敢肯定您在实体检索方面受到限制,但解决方法是将每批500个实体分配到一个列表。是否
ec.Entities
包含所有项目?您怎么知道它只循环500次?是否存在导致循环中断的异常?是,它包含所有项目是否所有项目都包含expirationdate
属性?
for(int i = 0; i < ec.Entities.Length; i++)
{
Entity item = ec.Entities[i];
if (item.Attributes.Contains("expirationdate"))
{
string temp1 = string.Empty;
DateTime date;
date = Convert.ToDateTime(item.Attributes["expirationdate"]);
temp1 = date.Date.ToString("d");
item.Attributes["expirationdate_hidden"] = temp1;
}
service.Update(item);
}
foreach (Entity item in ec.Entities)
{
if (item.Attributes.Contains("expirationdate"))
{
string temp1 = string.Empty;
DateTime date;
date = Convert.ToDateTime(item.Attributes["expirationdate"]);
temp1 = date.Date.ToString("d");
item.Attributes["expirationdate_hidden"] = temp1;
}
service.Update(item);
}