2017-05-08 1 views
0

J'ai créé une propriété personnalisée dans le profil utilisateur. Je veux chercher dans tous les profils utilisateur et les profils de sortie dans laquelle la propriété personnalisée contient une certaine chaîneRechercher une propriété personnalisée dans le profil utilisateur

Par exemple:

User1- personnalisés Valeur de la propriété est 1,2,3 User2- propriété personnalisée valeur 2,4,5 User3- personnalisée valeur de la propriété est 4,6,8

Je veux sortie tous les profils dans lesquels la propriété personnalisée contient 2 (en utilisant le code C#)

Ainsi, la sortie devrait avoir Utilisateur1 et Utilisateur2 0 Quelqu'un peut-il suggérer la meilleure façon de mettre en œuvre cela? J'ai trouvé des liens sur Internet pour la recherche de profils utilisateur, mais je ne sais pas si ces méthodes pourraient être utilisées pour rechercher dans les propriétés personnalisées. Exemple: https://www.collaboris.com/how-to-use-search-keywordquery-to-query-user-profiles-in-sharepoint/

J'utilise SharePoint 2013

Répondre

0

Nous avons fini par la promotion de la propriété personnalisée que nous avons ajouté au profil de l'utilisateur à un bien géré. De même, il semble que nous pouvons effectuer des recherches génériques sur les propriétés gérées. Nous effectuons donc des recherches comme "CustomProperty: *, 2, *" afin de renvoyer tous les profils utilisateur ayant le numéro 2 dans la propriété personnalisée de leur profil utilisateur.

Fait intéressant, le caractère générique ne fonctionne que sur la fin des propriétés OOTB comme FirstName donc nous ne pouvons pas faire des choses comme FirstName: oh et attendre à ce qu'il retournerait le profil de John Doe Mais nous pouvons certainement le faire - FirstName: Joh * et retournerait toutes les personnes dont le prénom commence par Joh (qui comprendrait John Doe)

Mais il semble que le joker fonctionne à la fois au début et à la fin pour le Propriétés personnalisées gérées (qui ont beaucoup aidé pour nous)

comment retourner les résultats de la recherche en utilisant C# nous avons utilisé this-

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; 
    } 

et nous invoqueraient cela comme

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