gpt4 book ai didi

c# - 字符串数组中的 LINQ "zip"

转载 作者:可可西里 更新时间:2023-11-01 08:35:32 26 4
gpt4 key购买 nike

假设有两个数组:

String[] title = { "One","Two","three","Four"};
String[] user = { "rob","","john",""};

user 值为 Empty 时,我需要过滤掉上面的数组,然后将两者连接或压缩在一起。最终输出应该是这样的:

{ "One:rob", "three:john" } 

这如何使用 LINQ 完成?

最佳答案

首先,您需要一个 Zip 运算符将两个数组压缩在一起。这是来自 Eric Lippert's blog 的代码的缩写版本(此版本中没有错误检查,只是为了简洁):

public static IEnumerable<TResult> Zip<TFirst, TSecond, TResult>
(this IEnumerable<TFirst> first,
IEnumerable<TSecond> second,
Func<TFirst, TSecond, TResult> resultSelector)
{
using (IEnumerator<TFirst> e1 = first.GetEnumerator())
using (IEnumerator<TSecond> e2 = second.GetEnumerator())
while (e1.MoveNext() && e2.MoveNext())
yield return resultSelector(e1.Current, e2.Current);
}

请注意,Zip 将包含在 .NET 4.0 的标准库中。

然后你只需要应用一个过滤器和一个投影。所以我们会得到:

var results = title.Zip(user, (Title, User) => new { Title, User })
.Where(x => x.Title != "")
.Select(x => x.Title + ":" + x.User);

关于c# - 字符串数组中的 LINQ "zip",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1176653/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com