Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/306.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 从csv文件中获取数据,并将其放入数组中_C# - Fatal编程技术网

C# 从csv文件中获取数据,并将其放入数组中

C# 从csv文件中获取数据,并将其放入数组中,c#,C#,忽略已评论的部分我可以控制这些部分。我遇到的问题是将csv文件中的数据导入地震数组。我得到语法错误,我知道为什么,这是因为数据类型不正确,但我真的不知道如何修复它。 另外,如果您注意到我正在尝试使用冒泡排序,并且由于double没有“compare”的定义,那么我应该使用什么来代替呢?如果您从CSV文件中读取数据,则可能必须从分割值中删除空白 尝试将.Trim()添加到列变量中 public class Earthquake { public double Magnitude { get

忽略已评论的部分我可以控制这些部分。我遇到的问题是将csv文件中的数据导入地震数组。我得到语法错误,我知道为什么,这是因为数据类型不正确,但我真的不知道如何修复它。
另外,如果您注意到我正在尝试使用冒泡排序,并且由于double没有“compare”的定义,那么我应该使用什么来代替呢?

如果您从CSV文件中读取数据,则可能必须从分割值中删除空白

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

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++;
        }
 }

如果您想排序YOR数组,请考虑使用Stask.LINQ

例如:

查看您发布的代码,GetData()将不起作用

尝试返回一个列表或可枚举列表

var byMag = earthQuakes.OrderBy(e => e.Magnitude);

-1:你真的需要发布这么多代码吗?这和你的另一个有什么不同,ps我没有对你的问题进行投票,你有朋友这样做吗?有人让我标记为已回答并创建一个新的。我没有好友只发布相关代码,并发布您得到的准确错误消息等等什么?我已经知道如何分割数据,我只需要知道如何将其放入我的地震阵列中。现在,我得到了很多语法错误,因为它不是正确的变量类型,考虑这个“3, 4, 6”,如果你把“4”拆分,你就不能把“4”转换成int,因为数字没有白色空间。哦,我明白你的意思。谢谢@user1784655-您需要加载正确的数据类型。有数百个关于如何读取CSV文件的示例,我建议做一些研究,并发布更多相关代码。您甚至没有指明具体的错误、错误行以及调试步骤。变量“i”未声明,并且您尝试使用方括号创建新的地震对象地震[]地球=新地震[column[1],…]根本无法工作。你也在试图从地震中恢复地震
var byMag = earthQuakes.OrderBy(e => e.Magnitude);
 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");