gpt4 book ai didi

c# - 如何正确配置 foreach 循环以避免索引超出范围错误?

转载 作者:太空宇宙 更新时间:2023-11-03 23:18:12 25 4
gpt4 key购买 nike

我有一个对象:

 public List<double> obj { get; set; }

public class Employee
{
public int EmployeeId { get; set; }
public int Skillssetpoints { get; set; }
public string Name { get; set; }
public Nullable<System.DateTime> Date { get; set; }
}

记录是这样的:

EmployeeId   SkillssetPoints   Date
1 5 4/5/2016 16:12:12
2 12 3/5/2016 17:12:12
3 4 8/5/2016 8:12:12
4 20 1/5/2016 2:12:12

这个对象将包含这样的值:

"obj":[10,20]

现在我想做的是获取所有员工数据,并为每个员工数据执行乘法像这样:

1st records:obj[0] * Skillssetpoints  (10*5=50)
2nd records:obj[0] * Skillssetpoints (20*12=240)

这是我的循环:

var employeeList=context.Employee.ToList();

foreach (var item in employeeList.Select((value, index) => new { value, index }))
{
var employee = new Employee();
employee.Skillssetpoints=obj[item.index] * item.Skillssetpoints;
//Save records in database
}

但这里的问题是我得到了员工的 4 条记录,而我的 obj 包含 2 个值,所以出现以下错误:

错误:索引超出范围。必须为非负数且小于集合的大小。

注意:我还想考虑我的员工记录少于列表对象中项目数的情况。

如何正确配置这个循环??

最佳答案

您可以使用 Enumerable.Take()根据 obj 中的项数仅处理前 n 项:

foreach (employeeList.Take(obj.Count).Select((value, index) => new { value, index }))
{
.....
}

这也适用于 obj 中的项目数多于 employeeList 中的项目数的情况。在这种情况下,只会处理与 employeeList 一样多的数据。

关于c# - 如何正确配置 foreach 循环以避免索引超出范围错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36512668/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com