多くのメンバーを持つ特定のグループが与えられた場合、グループ内でクエリを実行して、DisplayName が一致するメンバーを見つけたいと考えています。
以下のコードは、私が達成したいことの非機能的な例です。最初にリスト全体をロードしてから「where」を適用したくないことに注意してください。すでにそれを実行できますが、グループが大きいため低速です。
public static List<Principal> FindUsersOfGroup(string groupName, string displayNameQuery)
{
using (var context = new PrincipalContext(ContextType.Machine, Environment.MachineName))
{
var search = new GroupPrincipal(context);
search.SamAccountName = groupName;
// This where doesn't work, but is what I'm looking for.
search.Members.Where(m => m.DisplayName == displayNameQuery + "*");
using (var ps = new PrincipalSearcher(search))
{
// Want to get all members that match the query AND belong to the group.
return ps.FindAll().ToList();
}
}
}
また、実際のコードではコンテキストが Domain になっているので、わざと置き換えました。