2013-02-19 79 views
4

只要數據中沒有逗號,我的代碼就可以很好地工作。使用LINQ處理CSV數據

IEnumerable<Account> AccountItems = from line in File.ReadAllLines(filePath).Skip(1) 
       let columns = line.Split(',') 
       select new Account 
       { 
        AccountName = columns[0], 
        BKAccountID = columns[1], 
        Brand = columns[2], 
        FirstOE = columns[3], 
        LastOE = columns[4] 
       }; 

但是,輸出包含帶逗號的數據,並且當數據中有逗號時將數據封裝在雙引號中。我不確定我是否仍然可以使用LINQ來執行此操作。

Acme Health Care,{C2F9A7DD-0000-0000-0000-8B06859016AD},"Data With, LLC",2/4/2013,2/18/2013 
+1

這裏的正則表達式會很快變得非常複雜。最好使用.NET庫來處理這個問題。 – Syddraf 2013-02-19 19:58:16

回答

7

在這個問題請看: Reading CSV files using C#

TextFieldParser parser = new TextFieldParser(@"c:\temp\test.csv"); 
parser.TextFieldType = FieldType.Delimited; 
parser.SetDelimiters(","); 
while (!parser.EndOfData) 
{ 
    //Processing row 
    string[] fields = parser.ReadFields(); 
    foreach (string field in fields) 
    { 
     //TODO: Process field 
    } 
} 
parser.Close(); 

無需推倒重來,當.NET可以牽你的手。