我有一个键值对数组,其中包含LDAP专有名称,并且我想检索主机的DNS域名。 (只有DC不是fqdn)
假设LDAP解析正确完成,并且DC条目组合在一起就构成了主机的DNS域名。
给出以下代码,是否可以转换
DC = my
DC = domain
DC = com
进入
my.domain.com
我可以将for ... each与stringbuilder一起使用,但感觉并不优雅。有没有更好的办法?
我的代码如下:
var kvList = ParseDistinguishedName(ldapName);
StringBuilder sb = new StringBuilder();
var names = (from k in kvList
where k.Key == "DC"
select k.Value);
答案 0 :(得分:3)
非常幸运的是,string.Join
确实可以满足您的要求:
var dotSeparated = string.Join(".", names);
请注意,对于这样的简单查询,您可能要考虑使用方法调用而不是查询表达式。您所拥有的精确地等同于:
var names = kvList.Where(k => k.Key == "DC").Select(k => k.Value);
查询表达式很好,但是对于简单查询可能最终变得冗长。 (查询表达式确实可以用let
,join
等-引入透明标识符的任何东西。)
答案 1 :(得分:0)
大概是这样的:
kvList.Where(x => x.Key == "DC")
.Select(x => x.Value)
.Aggregate((x,y) => x + "." + y)