Vb.net 计算CSV文件中的唯一值

Vb.net 计算CSV文件中的唯一值,vb.net,csv,Vb.net,Csv,我试图创建一个VB(.NET framework)来调用csv并计算一列中有多少个唯一值。例如,csv将如下所示: Source Barcode Name,Source ID,Destination Barcode Name,Destination ID BARCODE_0006,A,Barcode_0001,F BARCODE_0002,B,Barcode_0001,G BARCODE_0003,C,Barcode_0001,H BARCODE_0004,D,Barcode_0001,I BA

我试图创建一个VB(.NET framework)来调用csv并计算一列中有多少个唯一值。例如,csv将如下所示:

Source Barcode Name,Source ID,Destination Barcode Name,Destination ID
BARCODE_0006,A,Barcode_0001,F
BARCODE_0002,B,Barcode_0001,G
BARCODE_0003,C,Barcode_0001,H
BARCODE_0004,D,Barcode_0001,I
BARCODE_0005,E,Barcode_0001,J
Dim count As Integer = 
    ReadCSV("MyFilePath.csv").  ' Open the file
    Skip(1).                    ' Skip the header
    Select(Function(r) r(0)).   ' Just the first column in each row
    Distinct().                 ' Unique entries only
    Count()                     ' How many there are
在本例中,脚本将返回
5
。注意,第1列中唯一值的数量可能会更改。

从以下内容开始:

Public Iterator Function ReadCSV(filePath As String, Optional delimiter As String = ",") As IEnumerable(Of String())
    Using parser As New TextFieldParser(filePath)
        parser.Delimiters = New String() {delimiter}

        While Not parser.EndOfData
            Yield parser.ReadFields()
        End While
    End Using
End Function
然后用它来解决你的问题,就像这样:

Source Barcode Name,Source ID,Destination Barcode Name,Destination ID
BARCODE_0006,A,Barcode_0001,F
BARCODE_0002,B,Barcode_0001,G
BARCODE_0003,C,Barcode_0001,H
BARCODE_0004,D,Barcode_0001,I
BARCODE_0005,E,Barcode_0001,J
Dim count As Integer = 
    ReadCSV("MyFilePath.csv").  ' Open the file
    Skip(1).                    ' Skip the header
    Select(Function(r) r(0)).   ' Just the first column in each row
    Distinct().                 ' Unique entries only
    Count()                     ' How many there are

没有VBScript(.Net Framework)这样的东西。你是说VB.Net(即.Net Framework)?
TextFieldParser
是一个很好的起点。是的,这就是我的意思。很抱歉我以前没用过(只是VBA)嗨,凯瑟琳。欢迎来到StackOverflow。这里的想法是,人们将帮助修复或改进您的代码,或者帮助您了解某些东西是如何工作的。这并不是说人们会为你编写代码。所以,为了改进你的问题,请尝试一些东西并分享代码,你可以解释你的想法和你遇到的困难。这非常好,非常有帮助-我能够让它工作。谢谢@CatherineH在堆栈溢出时感谢某人的最佳方式是通过单击答案左侧的复选标记(勾号)接受他们的答案。当问题解决时,它可以避免其他人试图回答问题。它也有助于未来的读者寻找相同问题的答案。