Sitecore for Salesforce Connector (S4S)具有複合過濾器,它允許您以編程方式創建一個數據源,該數據源在where子句中使用OR運算符轉換爲SOQL查詢。
var dataSource = new GenericSalesforceEntityDataSource("Download__c", GetSalesforceSession);
var orFilter = new LogicalDisjunctionFilter();
orFilter.AddDataSourceFilter("Contact__c", ComparisonOperator.Equals, profile.ContactId);
orFilter.AddDataSourceFilter(ApexLog.Fields.Location, ComparisonOperator.Equals, "SystemLog");
// The two filters above will be combined with a logical OR
dataSource.AddDataSourceFilter(orFilter);
var downloads = dataSource.GetQueryResultsAsEntities();
可以使用LogicalDisjunctionFilter的組合與LogicalConjunctionFilter根據需要建立AND和OR邏輯。
或者,您可以直接將SOQL where子句添加到數據源。
var dataSource = new GenericSalesforceEntityDataSource("Download__c", GetSalesforceSession);
dataSource.SoqlFilter = string.Format("Contact__c = '{0}' OR Location = 'SystemLog'", profile.ContactId);
var downloads = dataSource.GetQueryResultsAsEntities();
或者,正如馬特所言,您可以建立自己的SOQL字符串並直接運行。
var dataSource = new GenericSalesforceEntityDataSource("Download__c", GetSalesforceSession);
var queryResult = dataSource.RunSoqlQuery(new SoqlQuery(string.Format("Select Id from Download__c where Contact__c = '{0}' OR Location = 'SystemLog'", profile.ContactId)));
var downloads = dataSource.EntitysFromQueryResult<GenericSalesforceEntity>(queryResult);
SOQL將使這更簡單,在Salesforce的用戶界面,你通常可以指定規則一起,或者如果你想要更多的特殊邏輯啓用,您使用規則的數字寫出來的邏輯額外的字段,例子(1 AND(2 OR 3))。在dataSource中可能有某種方式指定,但我不熟悉您使用的API(通常直接使用salesforce)。 – 2012-01-10 00:54:30
謝謝!這非常有幫助。我能夠在API中指定'OR'SOQL查詢並且它工作正常! – 2012-01-10 19:00:51
爲了完整而作爲答案發布。 – 2012-01-10 19:03:30