C#中元素长度未知的两个列表的元素相减
c#
我的程序中有两个列表,列表的长度不相等。我想逐个元素减去这两个列表的成员并将它们保存在一个列表中。
List<double> arrivals = new List<double>();
List<double> departure = new List<double>();
List<double> delays = new List<double>();
double departure_p = 0.8;
double arrival_p = 0.45;
int slot = 0;
while (slot < 1000)
{
Random a = new Random();
double arrival_t = a.NextDouble();
Random d = new Random();
double departure_t = d.NextDouble();
if (departure_t <= departure_p)
{
departure.Add(departure_t);
}
if (arrival_t <= arrival_p)
{
arrivals.Add(arrival_t);
}
slot++;
}
当我使用这个方法时,我遇到了异常 system.IndexOutOfRangeException。
for (int i = 0; i <= arrivals.Count; i++)
{
delays.Add(departure[i] - arrivals[i]);
}
foreach (var item in delays)
Console.WriteLine(item);
我怎样才能做到这一点?
回答
如果在 for 循环中写 i <arrivals.Count ,问题就解决了。您还可以在 Linq 中使用 Zip 方法。
var delay = departure.Zip(arrivals, (depart, arri) => depart - arri);
foreach (var item in delay)
{
Console.WriteLine(item);
}