是否有任何方法可以搜索不匹配使用PrincipalSearcher的所有記錄。使用DirectorySearcher,您可以應用像(!sn="\*Jay\*")
這樣的過濾器。換句話說,所有記錄的姓氏不包含序列「傑伊」在任何地方。我想知道是否有任何與UserPrincipal參數做到這一點。PrincipalSearcher篩選不匹配的所有記錄
0
A
回答
0
不幸的是,這不是一個選項。我花了相當多的時間試圖找到一種輕鬆/有效地進行更高級搜索的方法。最近你可以得到一個高級搜索是與一些日期選項,但沒有文字搜索。
我最終做的是使用LDAP查詢單獨運行DirectorySearcher。我從搜索中返回的唯一屬性(最小化結果集大小並提高速度)是DN和對象類型(如果對象類型尚未過濾)。然後,我使用DN創建適當類型的新Principal對象並將其添加到集合中。
整個AccountManagement庫設計時考慮了一小部分任務(很明顯),而且很難擴展。我已經放棄使用DirectoryServices來完成大部分任務,因爲它是應該使用的真正的庫。
0
我似乎總是回答舊的問題,但這一直在尋找,我相信我已經明白了這一點。如果它幫助找到它的人,這是我設法拼湊在一起的東西。
您想要做的是創建自定義AdvancedFilter
併爲您的需要創建一些自定義搜索規則。默認的是相當有限的,但你可以創建任何你需要的東西。
你的問題的一個例子可以這樣
public class MyAdvancedFilter : AdvancedFilters
{
public MyAdvancedFilter(Principal principal) : base(principal)
{
}
public void WhereLastName(string lastName, MatchType match)
{
// The * is the normal wildcard for LDAP.
// Remove *'s for an exact match, or create a parameter to choose what to do.
this.AdvancedFilterSet("sn", "*" + lastName + "*", typeof(string), match);
}
}
辦理爲了使用這個,你還必須有一個自定義UserPrincipal
對象實現這一點。
[DirectoryObjectClass("user")]
[DirectoryRdnPrefix("CN")]
public class MyUser : UserPrincipal
{
public MyUser(PrincipalContext context) : base(context)
{
}
private MyAdvancedFilter searchFilter;
// use custom search filters
public new MyAdvancedFilter AdvancedSearchFilter
{
get
{
if (searchFilter == null)
searchFilter = new MyAdvancedFilter(this);
return searchFilter;
}
}
}
現在您已準備好使用此代碼。
MyUser u = new MyUser();
// find users without the last name containing "Jay"
u.AdvancedSearchFilter.WhereLastName("Jay", MatchType.NotEquals);
PrincipalSearcher ps = new PrincipalSearcher(u);
var res = ps.FindAll().Cast<MyUser>();
foreach (MyUser p in res)
{
// use the results here.
}
希望它可以幫助別人。
相關問題
- 1. 讓所有記錄,包括不匹配的記錄
- 2. 篩選記錄
- 3. 篩選記錄
- 4. 如何篩選特定字段不爲空的所有記錄
- 5. MySQL:選擇加入的表匹配的記錄所有值
- 6. PostgreSQL的:選擇記錄,其中的所有相關記錄匹配條件
- 7. Solr的篩選查詢 - 必須擁有所有匹配
- 8. 按最少記錄數(COUNT)匹配條件篩選
- 9. Access查詢查找所有記錄所有鏈接的記錄匹配
- 10. 篩選具有ALMOST匹配列的行
- 11. jQuery:select tr具有所有td動態匹配篩選條件
- 12. 返回所有記錄,而不管是否有匹配
- 13. 的MySQL選擇記錄如果其他記錄不匹配
- 14. 篩選器映射減少到匹配不同集合的記錄
- 15. 查詢更新所有記錄而不是與輸入相匹配的記錄?
- 16. 從左表中恢復所有記錄和從右記錄匹配的記錄
- 17. 字段小程序 - 不返回所有匹配的記錄
- 18. 獲取表中所有字段不完全匹配的所有記錄JOIN
- 19. 選擇匹配的記錄,如果表2有記錄,否則從表中選擇所有1
- 20. SPARQL篩選:獲得匹配
- 21. vstest.console是否可以篩選所有匹配特徵?
- 22. SQL:Group By不匹配記錄
- 23. 篩選行不匹配字符串
- 24. SQL Server選擇沒有匹配的有效記錄的錯誤記錄
- 25. 選擇與模式匹配的記錄
- 26. 查找記錄只有在所有匹配的密鑰
- 27. SQL刪除所有記錄如果ColA匹配和ColB匹配有時
- 28. jQuery - 選擇所有不匹配?
- 29. LINQ查詢選擇所有不匹配
- 30. 即使應用篩選器也獲得所有商店記錄