2016-04-07 16 views
0

非常に基本的なCSVファイルをC#に読み込むには、FileHelpersを使用します。CSVからC#FileHelpers

私はこのように見えるModelを持っています。

[DelimitedRecord(",")] 
[IgnoreFirst()] 
public class NavigationButton 
{ 
    public int ID; 
    public string Text; 
    public string Path; 
} 

CSVファイルは次のようになります。

enter image description here

私は適切な行を読んで、レコードごとに新しいNavigationButtonを作成できるようにしたいCSVファイルから読み込みます。私はそれらをDataTableに読みました。

public DataTable GetNavigationButtonNames() 
{ 
    var filename = @"C:\Desktop\NavigationButtons.csv"; 
    var engine = new FileHelperEngine(typeof(NavigationButton)); 
    return engine.ReadFileAsDT(filename); 
} 

が、私は今ではIEnumerableを実装していないことができDataTable通じないループとして。私はforeachループ内に新しいNavigationButtonを作成し、適切な行に追加しましたが、これは私が始めたやり方ではできません。

CSVファイルから読み込んだオブジェクトをループして、CSVファイルの各行に新しいボタンを作成できるように、この方法を変更するにはどうすればよいですか?

+1

テーブルの行をループ: 'DataTable.Rows' .... – Ric

+0

@Ricどのようにボタンをループして適切に名前を付けることができますか?すなわち、 'Button1.Text = row [0] [1] .ToString() ' – CBreeze

答えて

0

これはどう:

List<NavigationButton> buttons = new List<NavigationButton>(); 
DataTable dt = GetNavigationButtonNames(); 

foreach (DataRow dr in dt.Rows) 
{ 
    buttons.Add(new NavigationButton 
    { 
     ID = int.Parse(dr["id"]), 
     Text = dr["Text"].ToString(), 
     Path = dr["Path"].ToString() }); 
    }); 
} 
0

その後、あなたが行うことができ、代わりにFileHelperEngine<T>のジェネリック版を使用します。

var filename = @"C:\Desktop\NavigationButtons.csv"; 
var engine = new FileHelperEngine<NavigationButton>(); 
// ReadFile returns an array of NavigationButton 
var records = engine.ReadFile(filename); 
// then you can do your foreach or just get the button names with LINQ 
return records.Select(x => x.Text); 

ドキュメントをReadFile() is hereため。

また、ご希望の場合はReadFileAsList()もあります。

関連する問題