Vb.net 更新.csv文件中的值取决于第二个.csv文件中的值

Vb.net 更新.csv文件中的值取决于第二个.csv文件中的值,vb.net,linq,csv,Vb.net,Linq,Csv,我有两个csv文件,其中包含一些数据。其中一个看起来像这样: drid;aid;1date;2date;res; 2121;12;"01.11.2019 06:49";"01.11.2019 19:05";50; 9;10;"01.11.2019 10:47";"01.11.2019 11:33";0; 72;33;"01.11.2019 09:29";"01.11.2019 14:19";0; 777;31;"03.11.2019 04:34";"03.11.2019 20:38";167,3

我有两个csv文件,其中包含一些数据。其中一个看起来像这样:

drid;aid;1date;2date;res;
2121;12;"01.11.2019 06:49";"01.11.2019 19:05";50;
9;10;"01.11.2019 10:47";"01.11.2019 11:33";0;
72;33;"01.11.2019 09:29";"01.11.2019 14:19";0;
777;31;"03.11.2019 04:34";"03.11.2019 20:38";167,35;
2121;12;"01.11.2019 06:49";"01.11.2019 19:05";64,59;
9;10;"01.11.2019 10:47";"01.11.2019 11:33";0;
72;33;"01.11.2019 09:29";"01.11.2019 14:19";0;
777;31;"03.11.2019 04:34";"03.11.2019 20:38";192,35;
第二个scv看起来像这样

datetime;res;drid
"2019-11-01 09:02:00";14,59;2121
"2019-11-03 12:59:00";25,00;777
我的目标是比较日期的日期也是“drid”,如果两个文件中的日期相同,则得到“res”的总和,并替换第一个csv中的“res”值。结果必须如下所示:

drid;aid;1date;2date;res;
2121;12;"01.11.2019 06:49";"01.11.2019 19:05";50;
9;10;"01.11.2019 10:47";"01.11.2019 11:33";0;
72;33;"01.11.2019 09:29";"01.11.2019 14:19";0;
777;31;"03.11.2019 04:34";"03.11.2019 20:38";167,35;
2121;12;"01.11.2019 06:49";"01.11.2019 19:05";64,59;
9;10;"01.11.2019 10:47";"01.11.2019 11:33";0;
72;33;"01.11.2019 09:29";"01.11.2019 14:19";0;
777;31;"03.11.2019 04:34";"03.11.2019 20:38";192,35;
要在vb.net中获得这样的结果,我必须做些什么?我尝试使用LINQ查询,但没有结果,因为我是新手,并没有找到在两个文件中声明变量然后进行比较的方法。 好的,使用.bat,我将两个csv都加入到一个大的.csv中,并试图从同一个文件中获得结果,但同样没有成功。最后一个代码是:

Private Sub Button12_Click(sender As Object, e As EventArgs) Handles Button12.Click
       Dim Raplines As String() = IO.File.ReadAllLines("C:\Users\big.csv")
       Dim strList As New List(Of String)
       Dim readFirst As Boolean
       For Each line In Raplines
           If readFirst Then
               Dim strValues As String() = line.Split(";")
               Dim kn1 As String = strValues(0)
               Dim kn2 As String = strValues(59)
               Dim pvm1 As Date = strValues(2)
               Dim pvm1Changed = pvm1.ToString("dd")
               Dim pvm2 As Date = strValues(3)
               Dim pvm2Changed = pvm2.ToString("dd")
               Dim pvm3 As Date = strValues(60)
               Dim pvm3Changed = pvm3.ToString("dd")
               Dim Las1 As Decimal = strValues(9)
               Dim Las2 As Decimal = strValues(61)
               Dim sum As Decimal = Las1 - Las2
               If kn1 = kn2 And pvm3Changed = pvm1Changed Or pvm3Changed = pvm2Changed Then
                   strValues(9) = sum
                   strList.Add(String.Join(";", strValues))
               End If
           End If
           readFirst = True
       Next
       IO.File.WriteAllLines("C:\Users\big_new.csv", strList.ToArray())
   End Sub

我没有更改现有文件,而是编写了一个新文件。我使用了StringBuilder,这样运行时就不必创建和丢弃那么多字符串。与字符串不同,StringBuilder是可变的。我分析了日期的不同格式,并使用.Date来忽略时间

Private Sub ChangeCVSFile()
    Dim lines1 = File.ReadAllLines("C:\Users\someone\Desktop\CSV1.cvs")
    Dim lines2 = File.ReadAllLines("C:\Users\someone\Desktop\CSV2.cvs")
    Dim sb As New StringBuilder
    For Each line1 In lines1
        Dim Fields1 = line1.Split(";"c) 'drid;aid;1date;2date;res
        For Each line2 In lines2
            Dim Fields2 = line2.Split(";"c) 'datetime;res;drid
            '                                  
            '                        Trim the exta double quotes   "01.11.2019 06:49"
            Dim d1 = DateTime.ParseExact(Fields1(2).Trim(Chr(34)), "dd.MM.yyyy hh:mm", CultureInfo.InvariantCulture).Date
            '                                                      "2019-11-01 09:02:00"
            Dim d2 = DateTime.ParseExact(Fields2(0).Trim(Chr(34)), "yyyy-MM-dd hh:mm:ss", CultureInfo.InvariantCulture).Date
            If Fields1(0) = Fields2(2) AndAlso d1 = d2 Then
                Dim sum = CDec(Fields1(4)) + CDec(Fields2(1))
                Fields1(4) = sum.ToString
            End If
        Next
        sb.AppendLine(String.Join(";", Fields1))
    Next
    File.WriteAllText("C:\Users\someone\Desktop\CSV3.cvs", sb.ToString)
End Sub

非常感谢你!这对我来说是个小变化。