1

principalcollectionラムダ式と呼ばれるものを使用してエンティティを除外しようとしています。

これを機能させることができません。結果が得られません。 user.GetGroups()ユーザーがメンバーであるすべてのグループを返しますが、user.GetGroups().Where(....)何も返しません。

userprincipal user = Administrator とし
ましょう MyFilterString = "Exchange"
としましょう Administrator が次のグループのメンバーであるとしましょう:

Exchange Domain Servers
Exchange Services
Administrators
Enterprise Admins

ドメイン管理者 スキーマ管理者


UserPrincipal user = new UserPrincipal(MyActiveDirectoryContext);
..
..
PrincipalSearchResult<Principal> memberOfGroups = user.GetGroups().Where(g => g.SamAccountName.Contains(MyFilterString) == true) as PrincipalSearchResult<Principal>;

私が期待しているのは、memberOfGroups に 2 つのグループが含まれるようになったことです。

Exchange Domain Servers
Exchange Services

しかし、それは空になってしまいます。少しの助けは大歓迎です。

サイモン・O・オルセン

4

2 に答える 2

2

.Whereが標準の場合、 ;Enumerable.Whereを返すことはありません。PrincipalSearchResultだから毎回as戻ってきます。null使用を検討してください.ToList()

var memberOfGroups = user.GetGroups()
      .Where(g => g.SamAccountName.Contains(MyFilterString)).ToList()
于 2009-03-21T11:45:06.810 に答える
0

次のように、 Contains()ではなくIndexOf()を使用する必要があると思います。

PrincipalSearchResult memberOfGroups = user.GetGroups().Where(g => >g.SamAccountName.IndexOf(MyFilterString) > -1) as PrincipalSearchResult;

より明確にするために、質問を再構成することをお勧めします。

于 2009-03-21T11:31:14.113 に答える