Sharepoint 2013 在SharePoint用户配置文件中搜索自定义属性

Sharepoint 2013 在SharePoint用户配置文件中搜索自定义属性,sharepoint-2013,Sharepoint 2013,我在用户配置文件中创建了一个自定义属性。 我想搜索所有用户配置文件,并输出自定义属性包含特定字符串的配置文件 例如: User1-自定义属性值为1,2,3 User2-2,4,5中的自定义属性值 User3-自定义属性值为4,6,8 我想输出自定义属性包含2的所有配置文件 (使用c#代码) 所以输出应该有User1和User2 有人能建议最好的方法来实现这一点吗? 我确实在互联网上找到了一些使用关键字搜索搜索用户配置文件的链接,但不确定这些方法是否可以用于搜索自定义属性。 例如: 我正在使用Sh

我在用户配置文件中创建了一个自定义属性。 我想搜索所有用户配置文件,并输出自定义属性包含特定字符串的配置文件

例如:

User1-自定义属性值为1,2,3 User2-2,4,5中的自定义属性值 User3-自定义属性值为4,6,8

我想输出自定义属性包含2的所有配置文件 (使用c#代码)

所以输出应该有User1和User2

有人能建议最好的方法来实现这一点吗? 我确实在互联网上找到了一些使用关键字搜索搜索用户配置文件的链接,但不确定这些方法是否可以用于搜索自定义属性。 例如:


我正在使用SharePoint 2013

我们最终将添加到用户配置文件中的自定义属性升级为托管属性。 此外,我们似乎可以对托管属性执行通配符搜索,因此我们可以执行“CustomProperty:*,2,*”之类的人员搜索,这样它将返回所有用户配置文件,这些用户配置文件的自定义属性中有数字2

有趣的是,通配符只在像FirstName这样的OOTB属性的末尾起作用,所以我们不能像FirstName:oh这样做,并且期望它会返回johndoe的个人资料 但是我们当然可以做到这一点——名字:joh*这将返回所有名字以joh开头的人(包括johndoe)

但通配符似乎在自定义托管属性的开始和结束时都起作用(这对我们帮助很大)

关于如何使用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,*" );