2017-05-08 152 views
0

我在用戶配置文件中創建了自定義屬性。 我想通過所有的用戶配置文件和輸出中的自定義屬性包含特定字符串在SharePoint用戶配置文件中搜索自定義屬性

例如這些配置文件進行搜索:

User1-自定義屬性值是1,2,3 User2-自定義屬性在2,4,5 User3-自定義屬性值值是4,6,8

我想輸出的所有配置文件中的自定義屬性包含2 (使用C#代碼)

所以輸出應該有User1和User2

有人可以建議最好的方式來實現這個? 我找到了一些鏈接在互聯網上搜索用戶配置文件使用KeyWord搜索,但不知道這些方法是否可以用來搜索自定義屬性。 例子:https://www.collaboris.com/how-to-use-search-keywordquery-to-query-user-profiles-in-sharepoint/

我使用SharePoint 2013

回答

0

我們最終推動定製的屬性,我們添加到用戶的個人資料到託管屬性。 此外,似乎我們可以在託管屬性上執行通配符搜索,因此我們會執行像「CustomProperty:*,2,*」這樣的人員搜索,以便它將返回其用戶個人資料的定製屬性中編號爲2的所有用戶個人資料

有趣通配符只能在年底開箱即用的屬性,如名字,所以我們不能做這樣的事情姓:並期望它會返回John Doe的個人資料 但我們肯定可以做到這一點 - 姓:JOH *和將返回名字以Joh開頭的所有人(其中包括John Doe)

但是它看起來像通配符在開始和結束時都起作用自定義的管理特性(這幫助了大量的我們)

關於如何使用C#返回的搜索結果,我們使用這個 -

private DataTable GetPeople(SPSite spSite, string queryText) 
    { 

     var keywordQuery = new KeywordQuery(spSite) 
     { 
      QueryText = queryText, 
      KeywordInclusion = KeywordInclusion.AllKeywords, 
      SourceId = System.Guid.Parse("b09a7990-05ea-4af9-81ef-edfab16c4e31") 
     }; 

     keywordQuery.RowLimit = this.MaxProfilesToDisplay; 

     keywordQuery.SelectProperties.Add("AccountName"); 
     keywordQuery.SelectProperties.Add("PictureURL"); 

     SearchExecutor e = new SearchExecutor(); 
     ResultTableCollection rt = e.ExecuteQuery(keywordQuery); 
     var tab = rt.Filter("TableType", KnownTableTypes.RelevantResults); 
     var result = tab.FirstOrDefault(); 
     DataTable DT = result.Table; 
     return DT; 
    } 

,我們將調用此類似

DataTable dt = GetPeople(SPContext.Current.Site, "CustomProperty:*,2,*"); 
相關問題