Foreach 循环只经过几个项目
本文关键字:几个 项目 循环 经过 Foreach | 更新日期: 2023-09-27 18:32:48
我正在使用 C# 更新实体记录,例如动态 CRM 2011 中的联系人。CRM中大约有44,450个联系人处于活动状态,但以下代码片段仅通过500个。有人可以让我知道其中出了什么问题。
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);
}
将代码替换为以下内容
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);
}
如果它只迭代 500 次,那么以下原因可能是 这背后
- 要么 检索多个 返回您只有 500 条记录,只有当可以同时检索的最大记录时才有可能 在 CRM 设置中,时间可能设置为 500。
您可能认为它只循环遍历ec.Entities
,因为您计算包含expirationdate
的对象数
将
foreach替换为for循环,并查看是否使用了超过500个项目。
法典:
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);
}
我相当确定您在实体检索方面受到限制,但一种方法是将每批 500 个分配给一个列表。