我们在与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();
从此类集合中提取特定列值的正确语法是什么?
答案 0 :(得分:0)
我在你的代码中看到了一些含糊不清的东西 -
您正在查询所有帐户对象并仅处理第一个帐户对象。如果您是 仅对某些对象感兴趣,为什么不在查询中提供谓词(WHERE子句)?
您的字典值为List<sObject>
。如果'ExternalId__c'
是一个唯一的自定义字段,则每个'ExternalId__c'值都将包含一个Account对象。也许字典应该是字符串 - &gt;的sObject。然后,您可以访问字典值并在其上调用sObject方法。 dict [externalId] .getId()等。