2014-11-07 3 views
5

Как я могу искать по профилю собственности? MSDN говорит, что использует ProfileSearchManager, но он не работает. Я хочу искать пользователей по свойству MobilePhone.Поиск пользователя по профилю собственности

SPServiceContext serviceContext = SPServiceContext.GetContext(site); 
UserProfileManager upm = new UserProfileManager(serviceContext); 
ProfileSearchManager sp = ProfileSearchManager.GetProfileSearchManager(serviceContext); 

string[] searchPattern = { "123" }; 
ProfileBase[] searchResults = sp.Search(searchPattern, ProfileSearchFlags.User); 

foreach (ProfileBase profile in searchResults) 
{ 
    Console.WriteLine(profile.DisplayName); 
} 

ответ

2
using (SPSite site = new SPSite(siteUrl)) 
      { 
        using (var qRequest = new KeywordQuery(site) 
        { 
         QueryText = "MobilePhone:*" +"123" , 
         EnableQueryRules = true, 
         EnableSorting = false, 
         SourceId = new Guid("Enter here Result Source Guid"), 
         TrimDuplicates = false 
        }) 
        { 
         //Get properties you want here 
         qRequest.SelectProperties.Add("FirstName"); 
         qRequest.SelectProperties.Add("LastName"); 


         SearchExecutor e = new SearchExecutor(); 
         ResultTableCollection rt = e.ExecuteQuery(qRequest); 
         var tab = rt.Filter("TableType", KnownTableTypes.RelevantResults); 
         var result = tab.FirstOrDefault(); 

         DataTable resultTable = result.Table; 
        } 
}