说我有两个字符串 string str1 =“SAKVRLW” string str2 =“TCOEFO”
我想要的结果是
result =“STACKOVERFLOW”。
很抱歉,如果这是一个基本问题,但我是Linq的新手?有任何帮助/建议来实现这一目标吗?
答案 0 :(得分:1)
只为了它的乐趣:
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();
答案 1 :(得分:0)
这个linq查询的核心是从select语句中获取索引号,以用作另一个数组的索引器。
然后检查一个越界条件,同时将char数组处理成要连接的字符串。
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
将上述Select
(投影)与Aggregate
代替string.Join
一起使用可以这样做
str1.ToCharArray()
.Select ((ch, index) => string.Format("{0}{1}", ch, index < array2.Length ? array2[index].ToString() : string.Empty ))
.Aggregate ((seed, sentance) => seed + sentance )
输出:STACKOVERFLOW