2016-07-17 18 views
0

私はこのようになりますオブジェクトがあります:私は取得したいと思いベスト・メソッドタブ区切りのCSVをオブジェクトにソートするには?

Ad group Keyword  Avg. Monthly Searches (exact match only) Competition Suggested bid Impr. share Organic impr. share 

:私はこのような、以下のヘッダでCSVファイルを解析しようとしています

Public Class KeyWordObject 
Private LocalSearches As String 
Private AdvertiserCompetition As String 
Private NumberOfWords As String 

Public Sub New() 
    ' Leave fields empty. 
End Sub 

Public Sub New(ByVal LS As String, ByVal AC As String, ByVal NW As String) 
    LocalSearches = LS 
    AdvertiserCompetition = AC 
    NumberOfWords = NW 
End Sub 

Public Property LocalSearchAmount As String 
    Get 
     Return LocalSearches 
    End Get 
    Set(ByVal value As String) 
     LocalSearches = value 
    End Set 
End Property 

Public Property AdvertiserCompetitionAmount As String 
    Get 
     Return AdvertiserCompetition 
    End Get 
    Set(ByVal value As String) 
     AdvertiserCompetition = value 
    End Set 
End Property 

Public Property WordCount As String 
    Get 
     Return NumberOfWords 
    End Get 
    Set(ByVal value As String) 
     NumberOfWords = value 
    End Set 
End Property 

エンドクラス

をキーワードからのデータ、平均月間の検索、競合の列を検索し、それらをオブジェクトに配置します。このデータを解析する最良の方法は何でしょうか?

+1

CSVHelperを使用すると、かなり簡単に許可されます。最初の行を無視して、マップを設定して、どのCSV列がどのプロパティにマップされているのかを無視するように指示します。戻り値は 'IEnumerable 'です。もし 'KeyWordObject'項目のリストに' .ToList() 'を加えれば完了です。 – Plutonix

+0

あなたの目的が同じキーワードを持つ行を数えたり合計したりすることであるのか、ファイル内のすべての行についてクラスのオブジェクトを作成するのかは明確ではありません。あなたはもっと説明できますか? – Steve

+0

こんにちは、ごめんなさい。私はファイル内のすべての行に対して、特定の列からデータを取得するだけのオブジェクトを作成したかったのです。 –

答えて

1

私はCSVHelperに行くことになりました。これは私のために働く解決策です。他の提案をありがとう。

 Dim TEMPKEYWORDPATH = Directory.GetCurrentDirectory + "/" + "KeywordsTemp" + ".csv" 
Public Function CSVtoObject(CsvPath As String) 
    Dim csv = New CsvReader(File.OpenText(TEMPKEYWORDPATH)) 
    csv.Configuration.RegisterClassMap(Of MyCustomObjectMap)() 
    csv.Configuration.WillThrowOnMissingField = False 
    csv.Configuration.Delimiter = vbTab 

    Dim ListOfKeywords = csv.GetRecords(Of KeyWordObject).ToList() 
    Return ListOfKeywords 
End Function 

Public NotInheritable Class MyCustomObjectMap 
    Inherits CsvClassMap(Of KeyWordObject) 
    Public Sub New() 
     Map(Function(m) m.Keyword).Index(1) 
     Map(Function(m) m.LocalSearchAmount).Index(3) 
     Map(Function(m) m.AdvertiserCompetitionAmount).Index(4) 
     Map(Function(m) m.WordCount).Ignore() 
    End Sub 
End Class 
関連する問題