public class Earthquake
{
public double Magnitude { get; set; }
public string Location { get; set; }
public double Latitude { get; set; }
public double Longitude { get; set; }
public double depth { get; set; }
public DateTime date { get; set; }
public string EventID { get; set; }
public string URL { get; set; }
public Earthquake()
: this(string.Empty, string.Empty, string.Empty, string.Empty, string.Empty, string.Empty, string.Empty, string.Empty)
{ }
public Earthquake(string magna, string locate, string lat, string longi, string dept, string dat, string Event, string website)
{
Magnitude = Convert.ToDouble(magna);
Location = locate;
Latitude = Convert.ToDouble(lat);
Longitude = Convert.ToDouble(longi);
depth = Convert.ToDouble(dept);
date = Convert.ToDateTime(dat);
EventID = Event;
URL = website;
}
}
public void GetData()
{
string[] text = File.ReadAllLines(@"Earthquakes.csv");
Earthquake[] data = new Earthquake[1];
foreach (string line in text)
{
string[] myColumns = line.Split(',');
Earthquake[] earth = new Earthquake[myColumns[0], myColumns[1], myColumns[2], myColumns[3], myColumns[4], myColumns[5], myColumns[6], myColumns[7]];
data[i] = earth[i];
i++;
}
}
忽略评论的部分我控制了这些部分。我遇到的问题是将csv文件中的数据导入地震阵列。我收到语法错误,我知道原因,这是因为数据类型不正确,但我老实说无法弄清楚如何修复它。 此外,如果您注意到我正在尝试使用冒泡排序,并且由于没有“比较”的定义,因此我可以使用什么呢?
答案 0 :(得分:1)
如果从CSV文件中读取,则可能必须从拆分值中删除空格。
尝试将.Trim()添加到列变量
myColumns[0].Trim()
如果您希望对yor数组进行排序,请考虑使用System.Linq
例如:
var byMag = earthQuakes.OrderBy(e => e.Magnitude);
查看您发布的代码,GetData()将无效。
尝试返回列表或Enumerable
public IEnumerable<Earthquake> GetData(string filename)
{
string[] text = File.ReadAllLines(filename);
foreach (string line in text)
{
string[] myColumns = line.Split(',');
yield return new Earthquake(myColumns[0].Trim(), myColumns[1].Trim(), myColumns[2].Trim(), myColumns[3].Trim(), myColumns[4].Trim(), myColumns[5].Trim(), myColumns[6].Trim(), myColumns[7].Trim());
}
}
用法:
var earthquakes = GetData(@"Earthquakes.csv");