gpt4 book ai didi

C# 比较两个列表

转载 作者:行者123 更新时间:2023-12-03 00:29:51 25 4
gpt4 key购买 nike

背景:我有两个保存字符串的列表。列表 a 和列表 b。目前,我将Excel电子表格中列表a的值写入A列,将列表b的值写入列。列表 b 应该与列表 a 具有相同的数据并且按顺序排列。但情况并非总是如此。

问题:当我在Excel中写入列表b的值时,如果该值在列表a的同一点中,我想在单元格中写入该值,如果不是,我想在单元格中写入一个空将字符串插入单元格。

编辑:感谢您的回复和答案,效果很好,刚刚意识到我真正需要的是:

如果两个列表是:

a = {"a", "b", "c", "d", "e" }
b = {"a", "d", "e" }

操作结果应该是:

{ "a", "", "", "d", "e" }

最佳答案

一种方法是zip将列表放在一起,并将列表 b 中的“错误”值替换为空字符串:

var a = new [] {"a",   "b", "c",   "d"};
var b = new [] {"a", "Foo", "c", "Bar"};

var fixed_b = a.Zip(b, (x, y) => x == y ? x : "");

fixed_b 现在生成 "a""""c""".

将数据写入 Excel 电子表格时,只需迭代 fixed_b 而不是 b

编辑:

根据您的评论:

您可以创建一个像这样的小辅助方法:

IEnumerable<T> FillBlanks<T>(IEnumerable<T> source, IEnumerable<T> collection, T blank)
{
using(var e = collection.GetEnumerator())
{
bool more = e.MoveNext();
foreach(var x in source)
if(more && x.Equals((T)e.Current))
{
yield return x;
more = e.MoveNext();
}
else
yield return blank;
}
}

var fixed_b = FillBlanks(a, b, String.Empty);

关于C# 比较两个列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16231232/

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