c#
  • dynamics-crm
  • crm
  • 2016-08-31 116 views 0 likes 
    0

    我正在从CRM中检索数据。我想从quotedetail中检索几个字段。其中之一是int字段ad_discountpercent检查是否检索到数据 - CRM

    此字段不必具有值。

    我需要检查是否有从该字段中检索到的某个值,如果没有值,则将其设置为默认值0

    这里是我的代码:

     string fetch1 = @" 
            <fetch count='50' > 
             <entity name='quotedetail' > 
             <attribute name='manualdiscountamount' /> 
             <attribute name='priceperunit' /> 
             <attribute name='ad_discountpercent' /> 
             <attribute name='quantity' /> 
             <attribute name='extendedamount' /> 
             </entity> 
            </fetch>"; 
    
         EntityCollection result = service.RetrieveMultiple(new FetchExpression(fetch1)); 
    
         foreach (var c in result.Entities) 
         { 
          if(...) 
         } 
    

    我应该怎么放,而不是(...)看看是否有任何数据检索,并给一个默认值?如果你知道这两件事情,这将是有益的。

    让我知道你是否需要一些额外的信息。

    回答

    2

    要访问字段的值,你可以使用GetAttributeValue<T>(string attribute logical name)

    你的情况:

    c.GetAttributeValue<Entity>("ad_discountpercent"); 
    
    +0

    什么是结果类型? –

    +1

    这取决于你在<>括号里有什么。我想你想'c.GetAttributeValue (“ad_discountpercent”)':) – Nick

    1

    如果要更新Entity对象目前尚不清楚(即,将它保存回CRM)或只是需要处理的价值。

    if (!c.Attributes.Contains("ad_discountpercent")) 
    { 
        var newEntity = new Entity(c.LogicalName, c.Id) 
        newEntity["ad_discountpercent"] = 0; //replace 0 with your default value. 
    } 
    
    +0

    我需要将它保存回CRM,谢谢! –

    +1

    已更新代码以更好地符合您的要求。如果你想使用'ExecuteMultiple'来获得更新的性能,请参阅我对另一个基本实现问题的回答:http://stackoverflow.com/questions/36500614/crm-dynamics-2013-sdk-update-current-accounts-用-2-值/ 36506904#36506904 – Nicknow

    相关问题