【问题标题】:How add items to a list in foreach loop using c#如何使用 c# 在 foreach 循环中将项目添加到列表中
【发布时间】:2015-12-10 14:40:00
【问题描述】:

我正在使用以下 sn-p 将某些项目添加到字符串列表中。但它正在引发异常。

List<string> guids = null;
QueryExpression qExp = new QueryExpression
{
    EntityName = "account",
    ColumnSet = col1,
    Criteria = new FilterExpression
    {
        Conditions = { 
            new ConditionExpression("statecode",ConditionOperator.Equal,0)
        }
    }
};
sp.CallerId = g1;
EntityCollection ec1 = sp.RetrieveMultiple(qExp);
foreach (Entity item in ec1.Entities)
{
   guids.Add(Convert.ToString(item.Attributes["accountid"]));
}

例外: 对象引用未设置为对象的实例

【问题讨论】:

标签: c# list foreach dynamics-crm-2011


【解决方案1】:

为什么不使用 LINQ:

List<string> guids = ec1.Entities
   .Select(entity => Convert.ToString(entity.Attributes["accountid"]))
   .ToList();

【讨论】:

  • 可以做得更短:List&lt;string&gt; guids = ec1.Entities.Select(e =&gt; e.Id.ToString()).ToList();
  • 是的,他们是。 “accountid”是实体账户的主键字段。 RetrieveMultiple 返回的实体行始终包含由 Id 属性保存的主键。
  • 这可能就是我不使用 Dynamics CRM 的原因... B-)
  • 其实是一款不错的软件。微软在这方面做得很好。总有需要改进的地方,但这也适用于我自己的工作。
【解决方案2】:

List&lt;string&gt; guids = null; 更改为List&lt;string&gt; guids = new List&lt;string&gt;();,一切都会好起来的。

您必须先初始化列表,然后才能开始写入。您将其设置为null,因此例外。

【讨论】:

    【解决方案3】:

    你不能使用List&lt;string&gt; guids = null;

    尝试做List&lt;string&gt; guids = new List&lt;string&gt;();

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-08-25
      • 2020-03-12
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多