Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/296.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在使用linq的c语言中,有没有办法一个字符一个字符地合并两个字符串?_C#_Linq - Fatal编程技术网

C# 在使用linq的c语言中,有没有办法一个字符一个字符地合并两个字符串?

C# 在使用linq的c语言中,有没有办法一个字符一个字符地合并两个字符串?,c#,linq,C#,Linq,假设我有两条线 字符串str1=SAKVRLW 字符串str2=TCOEFO 我想要的结果如下 结果=堆栈溢出 对不起,如果这是一个基本的问题,但我是新的林克?有什么帮助/建议吗?只是为了好玩: string str1 = "SAKVRLW"; string str2 = "TCOEFO"; str1.ToCharArray() .Select((ch, ix)=> new { ch=ch, ix = ix*2 }) .Concat( str2.ToCharArray(

假设我有两条线 字符串str1=SAKVRLW 字符串str2=TCOEFO

我想要的结果如下

结果=堆栈溢出


对不起,如果这是一个基本的问题,但我是新的林克?有什么帮助/建议吗?

只是为了好玩:

string str1 = "SAKVRLW";
string str2 = "TCOEFO";

str1.ToCharArray()
    .Select((ch, ix)=> new { ch=ch, ix = ix*2 })
    .Concat(  str2.ToCharArray().Select((ch, ix)=> new { ch=ch, ix = ix*2 +1 }))
    .OrderBy(x=>x.ix) 
    .Select(x=>x.ch)
    .Aggregate("", (s,c)=>s+c).Dump();

这个linq查询的核心是从select语句中获取索引号,用作另一个数组的索引器

然后,在将字符数组处理为要联接的字符串时,检查是否存在越界条件

var str1 = "SAKVRLW";
var str2 = "TCOEFO";

var array2 = str2.ToCharArray();

string.Join(string.Empty, 
            str1.ToCharArray()
                .Select ((ch, index) => string.Format("{0}{1}", 
                                                       ch, 
                                                       index < array2.Length 
                                                       ? array2[index].ToString() 
                                                       : string.Empty  
                                                     )
                        )
           )

输出:STACKOVERFLOW

从str1.Zipstr2开始。非常困难,非常无用。相关:Zip将为您提供一些方法,但由于两个字符串的长度不同,这很复杂。你可以很容易地得到STACKOVERFLO。但是,正如@xanatos所说,这有什么意义?!为什么要限制自己使用linq,linq只是在foreach或for循环中可以完成的事情的快捷方式。先用for循环解决你的问题,然后回来问我如何将这个for循环转换成linq,但首先问你自己你真的需要转换它吗?这很顺利…非常感谢。。。这个.Dump是用于在控制台中呈现对象的LinqPad扩展方法。我喜欢您的聚合…但我在回答中使用了另一个数组的索引。
str1.ToCharArray()
    .Select ((ch, index) => string.Format("{0}{1}", ch, index < array2.Length ? array2[index].ToString() : string.Empty  ))
    .Aggregate ((seed, sentance) => seed + sentance )