如何使用C#或LINQ在数组中追加字符串

如何使用C#或LINQ在数组中追加字符串,c#,arrays,string,linq,C#,Arrays,String,Linq,我有一个字符串SelectedPath,它与/字符组合在一起。我使用/字符分割字符串,并将其存储在字符串数组中,如下所述 string SelectedPath = "Users/Shangai/China/server"; string[] OUs = SelectedPath.Split('/').Reverse().ToArray(); string container = ""; for(int i=0; i<OUs.Length;i++) {

我有一个字符串
SelectedPath
,它与
/
字符组合在一起。我使用
/
字符分割字符串,并将其存储在字符串数组中,如下所述

string SelectedPath = "Users/Shangai/China/server";
string[] OUs = SelectedPath.Split('/').Reverse().ToArray();
string container = "";
        for(int i=0; i<OUs.Length;i++)
        {
            container +="OU="+OUs[i].ToString()+",";
        }
我希望上面的
容器
值采用下面提到的格式

container="OU=Users,OU=Newyork,OU=Americas,DC=server"
注意:最后一个数组值必须添加前缀
DC=
而不是
OU=

如何以上述格式追加此字符串。如果我们能和LINQ一起做到这一点,我们真的很感激。请给我一些建议来达到这个目的。也有可能通过LINQ或Lambda表达式实现这一点吗?如果是,请给我同样的建议。

使用


更改
循环,如下所示:

for(int i=0; i < OUs.Length - 1; i++)
{ 
    container += string.Format("OU= {0},", OUs[i]);
}

container += string.Format("DC= {0}", OUs[OUs.Length - 1]);
for(int i=0;i

只需迭代到最后一项。然后在循环后附加
DC=
前缀。我更喜欢这种情况下最简单的解决方案,而不是无缘无故地多次创建不必要的枚举数,在真正有用和必要时使用
LINQ
,否则,使用简单循环不会丢失任何内容。

要获得列表的第一部分,您需要执行以下操作:

var firstPart = ous.Take(ous.Count - 1);
最后一个元素是

var lastElement = ous.Last();
因此,预先编写
“OU=“
非常简单:

var firstPartPrepended = firstPart.Select(x => "OU=" + x);
最后

var complete = String.Join("," firstPartPrepended) + ",DC=" + lastElement;

您可以使用
Take
Last
获取除最后一项以外的所有项目,然后添加最后一项<代码>字符串。Join
然后可以将数组转换为具有所需分隔符的字符串。我没有在这里检查
length>=2
,但如果需要,您可以处理它

string container = string.Format(
    "OU={0},DC={1}", 
    string.Join(",OU=", OUs.Take(OUs.Count() - 1)), 
    OUs.Last());
另一种方式:

string SelectedPath = "Users/Shangai/China/server ";
string[] OUs = SelectedPath.Split('/');
string container = string.Join(",", OUs.Select((s, i) => (i == OUs.Length - 1 ? "DC=" : "OU=") + s));

UselectedNodePath
的值是多少?如果未在任何地方使用,为什么要在代码中选择路径?我已经编辑了代码。它只是选择的路径。@elgonzo,为什么???这将更改输出,我认为不需要这样做。@Downvoter,请您指出回答中的错误,好吗?我不是Downvoter,但您的示例代码仍然缺少第一个“OU=”(string.Join只是将“OU=”放在元素之间,但不放在第一个元素前面)。
string container = string.Format(
    "OU={0},DC={1}", 
    string.Join(",OU=", OUs.Take(OUs.Count() - 1)), 
    OUs.Last());
string SelectedPath = "Users/Shangai/China/server ";
string[] OUs = SelectedPath.Split('/');
string container = string.Join(",", OUs.Select((s, i) => (i == OUs.Length - 1 ? "DC=" : "OU=") + s));