-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 に答える