2016-09-22 6 views
-2

"ABC、23、SEE"のような文字列があり、それに対応して名前、年齢、指定などのプロパティを持つEmployeeというクラスがあります。コンマで区切られた文字列からフィールドをロードするための断食方法

上記の例の文字列には、名前、年齢、および指定の順に値が含まれています。私が100要素の合計数を持つそのような文字列の配列を持っていることを考慮して、Employeeクラスのインスタンスを作成する最も速い方法は何でしょうか。

+0

私はちょうどあなたのEmployeeクラスにPopulateFromCSVメソッドを作成し、そこに文字列を分割し、人口を行い、5-8うライントップス。 – FailedUnitTest

+0

ええ、私はちょうどこれを行うより速い方法があるかどうか疑問に思っていた。フィールドを1つずつ分割してロードすることは、データの数が多いことを考慮すると、ちょっと面倒なようです(500個もの文字列になる可能性があります)。 – tavier

+0

ライブラリを使用している場合は、内部的にこのようなことが行われます。なぜあなた自身でそれらの行を書くのですか? – FailedUnitTest

答えて

2

私は「最も速い」方法を見つけることを心配しません。 「は十分に速く」と表示されます。そして、100本の弦については、事実上、どんな方法でも実用には十分速く動作します。 (私たちはそのような要件を定義した場合、実装が最速...)最も単純なものは、次のようになります。

var parts = dataStr.Split(new []{','}); 
var employee = new Employee(parts[0].Trim(), parts[1].Trim(), parts[2].Trim()); 
+1

'Trim()'は '.Replace(" "、" ")よりはるかに優れていますか? – Quantic

+0

@Quantic、これは、単語間のスペースも置き換えないためです)。しかし、単一置換はより速く動作し、メモリを消費しません。 –

0

私はLinqToCSVのようなCSVマッピングライブラリを使用します。 nuget.orgを検索すると、それらの数多くのものが見つかります。

+0

私に例や参考資料を教えてもらえますか? – tavier

+0

http://www.codeproject.com/Articles/25133/LINQ-to-CSV-libraryを見ると、サンプルコードを見ることができます。それは、あなたの従業員のクラスを飾ることができますし、その後、CSVで読むとそれはマッピングを行います。他にも優れたソリューションがあります。これらはすべてnuget.orgで入手できます。 – CodeMonkey1313

関連する問題