Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.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#_Loops_Foreach - Fatal编程技术网

C#用于循环和加法

C#用于循环和加法,c#,loops,foreach,C#,Loops,Foreach,我有一个C#类的人,我试图计算他们的总小时数: Person Person1 = new Person(); Person1.Name = "Paul"; Person1.Age = 38; Person1.actualGender = Person.Genders.male; Person1.workedHours = 15.5f; Person Person2 = new Person();

我有一个C#类的人,我试图计算他们的总小时数:

        Person Person1 = new Person();
        Person1.Name = "Paul";
        Person1.Age = 38;
        Person1.actualGender = Person.Genders.male;
        Person1.workedHours = 15.5f;

        Person Person2 = new Person();
        Person2.Name = "Frank";
        Person2.Age = 15;
        Person2.actualGender = Person.Genders.female;
        Person2.workedHours = 5f;
我可以这样做:

        float TotalHours;
        TotalHours = Person1.workedHours + Person2.workedHours;
但是我如何在foreach循环中真正做到这一点,因为我肯定会有两个以上的人

我的班级:

{
    public string Name { get; set; }
    public int Age { get; set; }
    public enum Genders { male, female }
    public Genders actualGender { get; set; }
    public float workedHours { get;  set;}
}

我建议使用一个列表,即:

构建一个列表以保存对象:

List<Person> peopleList = new List<Person>();
// call peopleList.add then add your objects
使用
foreach
循环:

float totalHours = 0;
foreach(Person p in peopleList){
    totalHours += p.workedHours;
}

我建议使用一个列表,即:

构建一个列表以保存对象:

List<Person> peopleList = new List<Person>();
// call peopleList.add then add your objects
使用
foreach
循环:

float totalHours = 0;
foreach(Person p in peopleList){
    totalHours += p.workedHours;
}

您必须在列表中添加对象,并且:

如果您想要总金额,您可以这样做:

var totalHours = people.Sum(p => p.workedHours);
foreach (var person in people)
        {
            var sum = people.Where(p => p.Name.Equals(person.Name)).Sum(p => p.workedHours);
            Console.WriteLine(sum);
        }
如果您想要人均工作时间,您可以这样做:

var totalHours = people.Sum(p => p.workedHours);
foreach (var person in people)
        {
            var sum = people.Where(p => p.Name.Equals(person.Name)).Sum(p => p.workedHours);
            Console.WriteLine(sum);
        }

您必须在列表中添加对象,并且:

如果您想要总金额,您可以这样做:

var totalHours = people.Sum(p => p.workedHours);
foreach (var person in people)
        {
            var sum = people.Where(p => p.Name.Equals(person.Name)).Sum(p => p.workedHours);
            Console.WriteLine(sum);
        }
如果您想要人均工作时间,您可以这样做:

var totalHours = people.Sum(p => p.workedHours);
foreach (var person in people)
        {
            var sum = people.Where(p => p.Name.Equals(person.Name)).Sum(p => p.workedHours);
            Console.WriteLine(sum);
        }

您应该在
foreach
之前学习使用数组。您应该在
foreach
此行
var sum=people.Where(p=>p.Name.Equals(person.Name)).sum(p=>p.workedHours)之前学习使用数组
是多余的、不必要的,当两个或更多人同名时,会给出错误的结果。如果你想要每个人的工作时间,为什么不只是
Console.WriteLine(person.workedHours)
在foreach?@Aominè中,我只是使用类似于示例的名称,正确的是标识字段。如果您像显示的那样单独显示person.workedHours,则当列表中有多个相同的人时,您不会对其他人的小时数求和。此行
var sum=people.Where(p=>p.Name.Equals(person.Name)).sum(p=>p.workedHours)
是多余的、不必要的,当两个或更多人同名时,会给出错误的结果。如果你想要每个人的工作时间,为什么不只是
Console.WriteLine(person.workedHours)
在foreach?@Aominè中,我只是使用类似于示例的名称,正确的是标识字段。如果您单独显示person.workedHours,则当列表中有多个相同的人时,您不会对其他的小时数求和