How to Search On multiple Profile properties
The following is a sample code on how to search for multiple profile properties. Note that the Profiles Search handles only And operator when joining search clauses.
// Declare return variable. string returnValue = String.Empty; // Declare ProfileManagementContext. ProfileManagementContext profile; // Instantiate ProfileManagementContext as an instance of the // Profiles Web service. profile = ProfileManagementContext.Create("https://localhost/ProfilesWebService/ProfilesWebService.asmx"); // Declare and instantiate SearchClause and SearchOptions objects. SearchClause searchClause = null; SearchClause rightClause = null; SearchOptions searchOptions = new SearchOptions(); // Build dataset of searchable entities for a profile. DataSet searchableEntities = profile.GetSearchableEntities(); // Build search clause for the UserObject. SearchClauseFactory factory = profile.GetSearchClauseFactory(searchableEntities, "Address"); searchClause = factory.CreateClause(ExplicitComparisonOperator.Equal, "address_line1", "One Microsoft Way"); rightClause = factory.CreateClause(ExplicitComparisonOperator.Equal, "address_line2", "One Microsoft Way"); searchClause = factory.IntersectClauses(searchClause, rightClause); // Set number of records to return. searchOptions.NumberOfRecordsToReturn = 10; // Specify profile properties to return in the search dataset. searchOptions.PropertiesToReturn = "address_id, address_line1, address_line2"; // Execute the search against the Profiles Web service. DataSet searchResults = profile.ExecuteSearch("Address", searchClause, searchOptions); |