2
在查詢我們的AD時,我們會在初始查詢(samaccounttype=805306368)
上獲得完整結果集。如果我們嘗試對值爲<not set>
(例如givenname
)的字段嘗試對查詢進行排序,則只會返回設置了值的記錄,並跳過沒有值的記錄。LDAP DirectorySearcher.sort缺少未設置值的記錄
(|(&(samaccounttype=805306368)(givenName=*))(&(samaccounttype=805306368)(!givenname=*)))
不知道它是關係到如何VirtualListView
正在處理的結果集,或者如果有另一個問題:我們使用下面的存在標誌,包括兩套,但排序時還是鬆不設定值嘗試。有沒有人跑到這以前和任何建議我失蹤?這裏是ds.virtuallistview
排序的代碼片段。
using (var ds = new DirectorySearcher(de))
{
ds.Filter = Filter;
foreach (var p in Properties)
{
ds.PropertiesToLoad.Add(p.LDAPName);
}
//get record count
ds.PropertyNamesOnly = false;
ds.Sort = new SortOption(this.Properties.PrimaryOrderBy.LDAPName, SortDirection.Ascending); //ldap must always return ascending so we can custom sort
ds.VirtualListView = new DirectoryVirtualListView(0, 0, 0);
foreach(SearchResult s in ds.FindAll()){ /*must enumerate the collection before calling approximate total*/ }
Records = ds.VirtualListView.ApproximateTotal;
results = ds.FindAll();
//Records = results.Count;
}