我编写的代码运行良好,此查询纯粹是出于教育目的。我想知道其他人如何做得更好,更干净。我特别讨厌在加入之前将列表项添加到另一个列表的方式............必须有一种更有效的方法。
我意识到一个简单的方法是将“OU=”和“DC=”及其相关文本存储在数据库中,......但这对我来说感觉不合适。
我正在为 LDAP 调用的 PrincipalContext 类的容器参数构建一个字符串。
“lst”列表<string>包含 LDAP 组织单元的 DataRows,例如“Accounts”、“Users”等
// Get ou list
List<string> lst = db.sda(sql).Rows.OfType<DataRow>().Select(dr => dr.Field<string>("txt")).ToList()
string OU = string.Empty;
List<string> lst = new List<string>();
foreach (string ou in Web.Info.Ldap.ouList)
{
lst.Add("OU=" + ou); // 6th revision .... this works, but wasn't as good as I thought it should be
lst.Add(string.Format("OU={0}", ou)); // 7th revision .... this works as well, but I thought it could be done better, which is why I am here.
}
OU = string.Join(",", lst); // born of 6th revision, used in 7th also
结果:“OU=Users,OU=Accounts,OU=Employees”
我对一个名为 dcList 的列表做同样的事情,它产生相同类型的字符串
DC = string.Join(",", lst);
结果:“DC=severname,DC=another_value,DC=com”;
我与OU一起加入以获得完整的字符串,就像这样
string container = string.Join(",", OU, DC);
最终结果:“OU=Users,OU=Accounts,OU=Employees,DC=sever,DC=othervalue,DC=com”
感谢您的时间和知识。