-2
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 文件中的数据获取到地震阵列中。我遇到语法错误,我知道为什么,这是因为数据类型不正确,但老实说,我不知道如何修复它。另外,如果您注意到我正在尝试使用冒泡排序,并且由于 double 没有“比较”的定义,那么我应该使用什么来代替?

4

1 回答 1

1

如果您从 CSV 文件中读取,您可能必须从拆分值中删除空格。

尝试将 .Trim() 添加到列变量

myColumns[0].Trim()

如果您希望对数组进行排序,请考虑使用 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");
于 2012-11-28T05:12:23.527 回答