Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/270.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# C将一个列表的值除以另一个列表的值,生成一个新列表_C#_List_Listbox_Division - Fatal编程技术网

C# C将一个列表的值除以另一个列表的值,生成一个新列表

C# C将一个列表的值除以另一个列表的值,生成一个新列表,c#,list,listbox,division,C#,List,Listbox,Division,我希望划分每个列表的相应值,以便生成一个新列表,其中包含两个列表中每个对应索引的划分结果。我的两个列表都有8个值,都是整数列表。我目前正在创建两个列表,如下所示: private void StartSchedule_Click(object sender, EventArgs e) { string ConnectionString = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=F:\A2 Computing\C#

我希望划分每个列表的相应值,以便生成一个新列表,其中包含两个列表中每个对应索引的划分结果。我的两个列表都有8个值,都是整数列表。我目前正在创建两个列表,如下所示:

private void StartSchedule_Click(object sender, EventArgs e)
    {
        string ConnectionString = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=F:\A2 Computing\C# Programming Project\TriHard.accdb";
        string SelectQuery = "SELECT Time.AthleteID, Athlete.AthleteName, Time.EventTime, Event.EventDistance FROM Event INNER JOIN (Athlete INNER JOIN [Time] ON Athlete.[AthleteID] = Time.[AthleteID]) ON Event.[EventID] = Time.[EventID];";
        OleDbConnection Connection = new OleDbConnection(ConnectionString);
        OleDbCommand Command = new OleDbCommand(SelectQuery, Connection);
        Command.Connection.Open();

        OleDbDataReader Reader = Command.ExecuteReader(CommandBehavior.CloseConnection);

        PaceCalculator pace = new PaceCalculator();

        List<int> Distancelist = new List<int>();
        List<int> Secondslist = new List<int>();
        List<int> Pacelist = new List<int>();
        while (Reader.Read())
        {
            pace = new PaceCalculator();
            pace.Distance = (int)Reader["EventDistance"];
            int DistanceInt = Convert.ToInt32(pace.Distance);
            Distancelist.Add(DistanceInt);

            pace = new PaceCalculator();
            pace.Time = (string)Reader["EventTime"]; //Reads in EventTime
            double Seconds = TimeSpan.Parse(pace.Time).TotalSeconds; //Converts the string into HH:MM:SS as a double
            int SecondsInt = Convert.ToInt32(Seconds); //Converts the double into an integer, returning the seconds in the total time
            Secondslist.Add(SecondsInt); //Adds the Seconds for each time to the list;

            //Need to fix this currently returns just 0
            var Pacelist2 = PaceCalc(Distancelist, Secondslist);
            listBox3.DisplayMember = "PaceInt";
            listBox3.DataSource = (Pacelist2);



        }


        listBox1.DisplayMember = "DistanceInt";
        listBox1.DataSource = Distancelist;

        listBox2.DisplayMember = "SecondsInt";
        listBox2.DataSource = Secondslist;
下面是我正在调用的函数,它尝试划分列表,但似乎不起作用:

public List<int> PaceCalc(List<int> Dlist, List<int> Slist)
    {
        PaceCalculator pace = new PaceCalculator();
        List<int> Plist = new List<int>();

        pace = new PaceCalculator();
        for (int i = 0; i == Dlist.Count; i++)
        {
            int PaceInt = Dlist[i] / Slist[i];
            Plist.Add(PaceInt);
        }
        return Plist;
    }

我希望在列表框3中显示部门的结果。我是否正确划分列表以及如何在列表框中显示它?

您的for循环永远不会执行,因为您正在测试I==Dlist.Count。应该是:

for (int i = 0;i < Dlist.Count; i++)
或者,您可以使用LINQ执行此操作:

public List<int> PaceCalc(List<int> Dlist, List<int> Slist)
{
    return Dlist.Zip(Slist, (a, b) => a / b).ToList();
}

for循环从未执行,因为您正在测试i==Dlist.Count。应该是:

for (int i = 0;i < Dlist.Count; i++)
或者,您可以使用LINQ执行此操作:

public List<int> PaceCalc(List<int> Dlist, List<int> Slist)
{
    return Dlist.Zip(Slist, (a, b) => a / b).ToList();
}
两个问题:

首先,您需要将签入for循环修改为i 所以你的方法是:

public List<int> PaceCalc(List<int> Dlist, List<int> Slist)
{
    List<int> Plist = new List<int>();
    for (int i = 0; i < Dlist.Count; i++)
    {
        int PaceInt = Dlist[i] / Slist[i];
        Plist.Add(PaceInt);
    }
    return Plist;
}
尽管第二个问题不会导致任何错误/异常,因为找不到DisplayMember,它将使用默认的ToString重载,您将获得数字。

两个问题:

首先,您需要将签入for循环修改为i 所以你的方法是:

public List<int> PaceCalc(List<int> Dlist, List<int> Slist)
{
    List<int> Plist = new List<int>();
    for (int i = 0; i < Dlist.Count; i++)
    {
        int PaceInt = Dlist[i] / Slist[i];
        Plist.Add(PaceInt);
    }
    return Plist;
}

尽管第二个问题不会导致任何错误/异常,因为找不到DisplayMember,它将使用默认的ToString重载,您将获得数字。

具体来说,什么似乎不起作用?您的代码表现如何?您希望它表现如何?如果您发布一个简单的示例会更好。另外,您应该创建一个单独的函数,只对两个列表进行划分,并从PaceCalc调用该函数,以便分离功能。具体来说,什么似乎不起作用?您的代码表现如何?您希望它表现如何?如果您发布一个简单的示例会更好。另外,您应该创建一个单独的函数,只对两个列表进行划分,并从PaceCalc调用该函数,以便分离功能。它解决了列表框中不返回任何内容的问题,谢谢。但是,我的列表框只包含重复8次正确数字的数字0。我如何调整它,使我得到一个值,而不仅仅是0?不管怎样,我的除法是错误的。谢谢你的帮助!它解决了列表框中不返回任何内容的问题,谢谢。但是,我的列表框只包含重复8次正确数字的数字0。我如何调整它,使我得到一个值,而不仅仅是0?不管怎样,我的除法是错误的。谢谢你的帮助!解决了问题,更好的解决方案。谢谢。解决了问题,还有更好的解决方案。谢谢