I have two csv files which contains calendar for 10 cars and for 15 drivers. Target is to join both calendars.
Car.csv looks like this
Car 1;A
Car 2;A
Car 3;I
Car 4;A
Car 5;A
Car 6;I
Car 7;A
Car 8;A
Car 9;Y
Car 10;A
Driver.csv looks like this
Driver 1;V
Driver 2;V
Driver 3;Y
Driver 4;A
Driver 5;A
Driver 6;V
Driver 7;A
Driver 8;I
Driver 9;I
Driver 10;V
Driver 11;V
Driver 12;A
Driver 13;A
Driver 14;A
Driver 15;A
Desired output have to be
Car 1;Driver 4
Car 2;Driver 5
Car 3;Driver 8
Car 4;Driver 7
Car 5;Driver 12
Car 6;Driver 9
Car 7;Driver 13
Car 8;Driver 14
Car 9;Driver 3
Car 10;Driver 15
My code:
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Dim car As String() = IO.File.ReadAllLines("path\car.csv").ToArray
Dim drivers As String() = IO.File.ReadAllLines("path\driver.csv").ToArray
Dim sb As New List(Of String)
For Each line In car ' loop throw car
Dim Fields1 = line.Split(";"c)
For Each line1 In drivers 'loop throw driver
Dim Fields2 = line1.Split(";"c)
Dim driver As String = Fields2(0)
If Fields1(1) = Fields2(1) Then
Fields1(1) = driver
sb.Add(String.Join(";", Fields1))
End If
Next
Next
IO.File.WriteAllLines("path\joined.csv", sb.ToArray())
End Sub
Unfortunately output looks wrong
Car 1;Driver 4
Car 2;Driver 4
Car 3;Driver 8
Car 4;Driver 4
Car 5;Driver 4
Car 6;Driver 8
Car 7;Driver 4
Car 8;Driver 4
Car 9;Driver 3
Car 10;Driver 4
How to avoid assigning of already used values? I tried to paste in inner Loop Fields2(1)="used", but it doesn't won't work. And I got lost here.
Because I'm more familiar with parsing csv in vb.net I wrote code with it, but additionally I need it for whole calendar with 31 columns and in Excel VBA, but this is another story.
Thank you for answers!