从文件中读取一个CSV文件并将其中的数据拿出计算,读取文件时是以字符串形式读取,计算其中的数据时需要将string转化为double类型计算。
CSV数据内容:
程序:
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Diagnostics;
namespace stadyIdent
{
class Program
{
static void Main(string[] args)
{
List<string[]> Temp = new List<string[]>();//定义一个List类,里面存放的是String[]数组;
Temp = ReadCSV(@"C:\Users\user\Desktop\2.csv");//读取CSV表格中的数据;
double[] Temp4 = new double[Temp.Count];//这里定义了一个数组,与表不同,数组在定义时需要先定义数组长度;
List<double> Temp2 = new List<double>();//定义了一个double表,和数组类似;数据的存储和数组一样;
List<double[]> Temp3 = new List<double[]>();//定义了一个double[]数组表;
double average = 0.0;//算平均数;
double num = 0.0; //算总数;
double average1 = 0.0;//算平均数;
double num1 = 0.0; //算总数;
for (int i = 0; i < Temp.Count; i++)
{
Temp4[i] = Double.Parse(Temp[i][0]);//这里是将Temp中的值转化为double类型存储在数组中;
Temp2.Add(Double.Parse(Temp[i][0]));//这里是直接将Temp中的string类型转化为double类型;
//这里需要注意的是,Temp是string[]类型的,需要定位到该元素的位置;
}
Temp3.Add(Temp2.ToArray());//这是将double表转化为double[]放入double[]表内,存储的长度是【1】【27】;
Console.WriteLine("这是 List<double[]>Temp3 的数据");
for (int i = 0; i < Temp.Count; i++)
{
Console.Write("{0} ", Temp3[0][i]);
num += Temp3[0][i];
}
average = num / (Temp.Count);
Console.WriteLine(num);
Console.WriteLine(average);
Console.WriteLine("这是 double[]Temp4 的数据");
for (int i = 0; i < Temp4.Length; i++)
{
Console.Write("{0} ", Temp4[i]);
num1 += Temp4[i];
}
average1 = num1 / (Temp4.Length);
Console.WriteLine(num1);
Console.WriteLine(average1);
}
public static List<string[]> ReadCSV(string strPathFile)
{
FileStream fs = new FileStream(strPathFile, FileMode.Open, FileAccess.Read);
StreamReader Read = new StreamReader(fs, Encoding.Default);
List<string[]> fTemp = new List<string[]>();
string Ide = "";
while (Ide != null)
{
Ide = Read.ReadLine();
if (Ide != null && Ide.Length > 0)
{
fTemp.Add(Ide.Split(','));
}
}
Read.Close();
return fTemp;
}
public static void WriteCSV(List<string[]> list, string strPathFile, bool append, string strSeperate)
{
StreamWriter stWrite = new StreamWriter(strPathFile, append, Encoding.Default);
foreach (string[] ac in list)
{
stWrite.WriteLine(string.Join(strSeperate, ac));
}
stWrite.Close();
} }
}
运行结果图: