2015-09-29 76 views
2

如何在wpf -xaml(C#)中編寫代碼以讀取.csv文件中的特定行。 我創建的週期表上的每個按鈕都會進入一個新窗口,在列表視圖中顯示它的具體內容。但那麼我的問題該怎麼做?如何讀取WPF中的.csv文件中的特定行(xaml)

public class Atomic 
{ 
    public string Group { get; set; } 
    public string Period { get; set; } 
    public string Block { get; set; } 
    public string Atomicnumber { get; set; } 
    public string Stateat { get; set; } 
    public string Electronconfiguration { get; set; } 
    public string ChemspiderID { get; set; } 

    public Atomic(string group, string period, string block, string atomicnumber, string stateat, string electronconfiguration, string chemspiderID) 
    { 
     Group = group; 
     Period = period; 
     Block= block; 
     Atomicnumber = atomicnumber; 
     Stateat = stateat; 
     Electronconfiguration = electronconfiguration; 
     ChemspiderID = chemspiderID; 
    } 
} 

public IEnumerable<Atomic> ReadCSV(string fileName) 
{ 
    // We change file extension here to make sure it's a .csv file. 
    // TODO: Error checking. 
    string[] lines = File.ReadAllLines(System.IO.Path.ChangeExtension(fileName, ".csv")); 

    // lines.Select allows me to project each line as a Person. 
    // This will give me an IEnumerable<Person> back. 
    return lines.Select(line => 
    { 
     string[] data = line.Split(';'); 
     // We return a person with the data in order. 
     return new Atomic(data[0], data[1], data[2], data[3], data[4], data[5], data[6]); 
    }); 
} 

回答

0

如果您想讀取特定的行,您可以執行以下操作。

public Atomic ReadCSV(string fileName, int lineIndex) 
{ 
    return File.ReadLines(System.IO.Path.ChangeExtension(fileName, ".csv")) 
       .Skip(lineIndex) 
       .Select(line => line.Split(';')) 
       .Select(data => new Atomic(data[0], data[1], data[2], data[3], data[4], data[5], data[6])) 
       .FirstOrDefault(); 
} 

這將讀取的第一個lineNumber + 1行的文件中獲取閱讀的最後一行,並從該行創建Atomic對象。如果沒有足夠的線路,它將返回一個null值。如果您更喜歡基於索引的索引,只需將.Skip(lineIndex)更改爲.Skip(lineIndex - 1)即可。

+0

Thnx尋求幫助。我的問題是:當我點擊按鈕btnHydrogen_MouseUp時,它必須讀取.csv文件中的第一行。這也與下一個按鈕btnLithium_MouseUp讀取第二行有關。我必須在每個按鈕事件中放置一個特殊的代碼嗎? – JHINZ