目前,我有以下内容,来自 LDAP。
// Get context, based on currently logged on user
PrincipalContext domainContext = new PrincipalContext(ContextType.Domain, Environment.UserDomainName);
// Search for the "Domain Users" group, with domain context
GroupPrincipal group = GroupPrincipal.FindByIdentity(domainContext, IdentityType.SamAccountName, "Domain Users");
if(group != null) {
List<Principal> members = null;
members = group.GetMembers(false)
.OrderBy(principal => principal.Name).ToList();
List<Principal> Principals = members
.OrderBy(a => a.Name.Split(',')[0])
.ThenBy(a => a.Name.Split(',')[1])
.ThenBy(a => a.SamAccountName).ToList();
}
我遇到的问题是,如果我有 Doe,John,它工作正常,但如果我有 Admin01,它会崩溃,因为它找不到第二部分。我该如何更改它,以便在只有一个单词的情况下也能正常工作?
首先,我会将其投影为复合类型,这样您就不会一遍又一遍地拆分。
然后我会使用一个? : 操作员。然后投影回来以获得原始类型。
members
.Select( m => new { member = m, split = m.Name.Split(',') } )
.OrderBy( a => a.split[0] )
.ThenBy( a => a.split.Count() > 1 ? a.split[1] : string.Empty )
.ThenBy( a => a.member.SamAccountNamr )
.Select( a => a.member );
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)