.Net Salesforce集成 - 从List <sobject> </sobject>获取列值

时间:2014-01-08 04:27:50

标签: .net salesforce integration

我们在与Salesforce.com的.Net集成中使用Partner API。我使用以下代码使用ExternalId__c作为每条记录的密钥将帐户记录添加到字典中。

public Dictionary<string, List<sObject>> getAccountMap(SalesforceConnection clientConn)
{
    Dictionary<string, List<sObject>> accountByMerchNum = new Dictionary<string, List<sObject>>();

    List<sObject> sObjRTypes = clientConn.performQuery("SELECT Id, ExternalId__c FROM Account");

    if (sObjRTypes != null && sObjRTypes.Count > 0)
    {
        sObject Account = sObjRTypes[0];
        foreach (XmlElement elem in Account.Any)
        {
            if (elem.LocalName.ToString() == "ExternalId__c")
            {
                if (accountByMerchNum.ContainsKey(elem.InnerText))
                {
                    accountByMerchNum[elem.InnerText].Add(Account);
                }
                else
                {
                    accountByMerchNum.Add(elem.InnerText, new List<sObject> { Account });
                }
            }
        }
    }
    return accountByMerchNum;
}

如何从Dictionary&gt;中提取特定列值?我猜这应该是类似于以下内容......但到目前为止,我的猜测是不正确的。

Dictionary<string, List<sObject>> accountDictionary = new Dictionary<string, List<sObject>>();
String tempId = accountDictionary[externalId].getId();

从此类集合中提取特定列值的正确语法是什么?

1 个答案:

答案 0 :(得分:0)

我在你的代码中看到了一些含糊不清的东西 -

  1. 您正在查询所有帐户对象并仅处理第一个帐户对象。如果您是 仅对某些对象感兴趣,为什么不在查询中提供谓词(WHERE子句)?

  2. 您的字典值为List<sObject>。如果'ExternalId__c'是一个唯一的自定义字段,则每个'ExternalId__c'值都将包含一个Account对象。也许字典应该是字符串 - &gt;的sObject。然后,您可以访问字典值并在其上调用sObject方法。 dict [externalId] .getId()等。