如何按名字和姓氏排序,然后按 SamAccountName 排序,其中并非所有姓名都有名字和姓氏?

2024-05-10

目前,我有以下内容,来自 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(使用前将#替换为@)

如何按名字和姓氏排序,然后按 SamAccountName 排序,其中并非所有姓名都有名字和姓氏? 的相关文章

随机推荐