C# 将两个列表合并为一个列表,如 Enumerable.ConvertAll

标签 c# list merge convertall

我想将具有相同索引的两个列表转换为一个列表。 鉴于此:

List<double> ListA = new List<double> {  1,  2,  3,  4,  5  };
List<string> ListB = new List<string> { "A","B","C","D","E" };

到现在为止,我用过这个:

List<string> UNHAPPY = new List<string>();
for (int ListIndex = 0; ListIndex < ListA.Count; ListIndex++)
{
    UNHAPPY.Add(ListB[ListIndex]+ListA[ListIndex].ToString());
}
// such that UNHAPPY == new List<string> {"A1", "B2", "C3", "D4", "E5"}

但我真的想尽可能使用短代码,像这样(类似于 Enumerable.ConvertAll):

List<string> HAPPY = SOME_CONTAINER(ListA, ListB).SOME_SELECTOR((a,b) => b + a.ToString());

// such that HAPPY == new List<string> {"A1", "B2", "C3", "D4", "E5"}

有什么快速的方法吗?提前谢谢你!

最佳答案

LINQ 有一个方法,叫做 Zip :

var res = ListA.Zip(ListB, (a,b) => $"{b}{a}");

它采用两个序列和一个 Func 委托(delegate),并将委托(delegate)应用于来自两个序列的项目对。

注意:在a 上调用ToString 是多余的,C# 会将字符串连接到任何内容,包括int,通过在相应的对象上调用 ToString。我更喜欢字符串插值,尤其是当您需要连接两个以上的项目时。

关于C# 将两个列表合并为一个列表,如 Enumerable.ConvertAll,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46743283/

相关文章:

c# - 如何找到反向也是子序列的最长连续子序列

python - 在 Python 中从文件创建列表

java - 打印并返回正确的列表

list - 用于过滤列表的dart等价函数是什么?

sql-server - 水平连接两个查询

c# - ASP.NET - 在网站启动时更改键盘输入语言

c# - 为什么这个小程序给出 "Common Language Runtime detected an invalid program"?

python - 合并两个文件,每行按整数排序,不读入内存也不排序

python - 添加具有相同键和 int 类型值的字典列表

c# - Windows 7 更新,导致 WPF 应用程序中出现 "Item has already been added. Key in dictionary: controlbrush"