Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

223
Views
Subtract the elements of two lists from each other with unknown element lengths in C#

I have two lists in my program that the length of the lists is not equal. I want to subtract the members of these two lists element by element and save them in one list.

            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++;
           }

When I use this method I encounter the exception system.IndexOutOfRangeException.


for (int i = 0; i <= arrivals.Count; i++)
            {
                delays.Add(departure[i] - arrivals[i]);
            }
            foreach (var item in delays)
                Console.WriteLine(item);

How can I do this?

over 4 years ago · Santiago Trujillo
2 answers
Answer question

0

If you write i <arrivals.Count in the for loop, the problem will be solved. You can also use the Zip method in Linq.

var delay = departure.Zip(arrivals, (depart, arri) => depart - arri);
            
            foreach (var item in delay)
            {
                Console.WriteLine(item);
            }
over 4 years ago · Santiago Trujillo Report

0

Well, IndexOutOfRangeException means that index i exceeds Count of either departure or arrivals so departure[i] - arrivals[i] becomes illegal. You can amend the for loop as

for (int i = 0; i < Math.Min(arrivals.Count, depart.Count); i++)
  delays.Add(departure[i] - arrivals[i]); 

foreach (var item in delays)
  Console.WriteLine(item);

with i < Math.Min(arrivals.Count, depart.Count) conditon we now guarantee, that i will never be beyond both departure and arrivals

over 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!