1
        ABCDE
血液 0.02401 0.1104 0 0 1
肺 0.0016 0.1104 13 0 0.36
ガット 0.0166 0.015456 19.3 0 0.035
膵臓0.0010 0.001104 20.3 0 0.035
脾臓 0.0006 0.006072 6.8 0 0.22
ハート 0.0011 0.0054096 9.1 0 0.26
筋肉 0.1359 0.03069 7 0 0.04
脂肪 0.03297 0.007728 38.2 0 0.24
腎臓 0.0024 0.017112 10.5 0 0.16
皮膚 0.0666 0.0064032 26.9 0 0.02
脳 0.0019 0.00276 18.1 0 0.03
骨 0.0255 0.013248 8.3 0 0.04
肝臓 0.0128 0.004416 11.3 0.045 0.21

ファイル Parameter.csv (上記の値) を読み取り、数値のみを含む Variables という名前のリストを作成する FileReader という名前のメソッドがあります。FileReader にオルガン名の文字列を読み取らせ、それをリスト内のそれぞれの値のセットの前に配置することもできます。

    class Organ
    {
    public string name {get; set;}
    public double A {get; set;}
    public double B {get; set;}
    public double C {get; set;}
    public double D {get; set;}
    public double E {get; set;}
    }

void Main()
{
FileReader Parameters = new FileReader(@"C:\Parameter.csv");
var ListofOrgans = List<Organ>();
Organ Blood = new Organ();
Blood.name = "Blood";
Blood.A = Parameters.Variables[0];
Blood.B = Parameters.Variables[1];
Blood.C = Parameters.Variables[2];
Blood.D = Parameters.Variables[3];
Blood.E = Parameters.Variables[4];
ListofOrgans.Add(Blood);
}

77個の値すべてをハードコードする必要がないように、これを自動化する方法はありますか?

4

2 に答える 2

1

これは、次のような StreamReader を使用して行います (メモリからこれを入力していますが、遅いです!):

var ListOfOrgans = new List<Organ>(); 
String tmp = null;
String [] tokens = null;
using(StreamReader sr = new StreamReader(@"C:\Parameter.csv"))
{
   while( !sr.EndOfStream )
   {
      tmp = sr.ReadLine();
      tokens = tmp.Split(' ');
      Organ foo = new Organ();
      foo.name = tokens[0];
      foo.A = Convert.ToDouble(tokens[1]);
      .
      .
      etc.

      ListOfOrgans.Add(foo);
   }
}
于 2013-05-28T02:24:29.443 に答える