gpt4 book ai didi

c# - 转变 ? : statement to handle more than 2 answers

转载 作者:行者123 更新时间:2023-11-30 19:06:21 27 4
gpt4 key购买 nike

我对编程还很陌生,但我的任务是维护一些由前员工创建的应用程序。我有一个 ?: 声明现在需要处理的不仅仅是真或假声明,但我不确定如何去做。有问题的代码是:

    MailDomainContext mail = new MailDomainContext();
mail.Load(mail.GetMailsQuery("Workforce Attendence Issue",
loadEmp.Entities.Where(emp => emp.EmployeeID == _EmployeeID).First().Username,
(loadEmp.Entities.Where(emp => emp.EmployeeID == _EmployeeID).First().EmployeeShiftID >= 2 ? "supervisor1" : "supervisor2"),
loadEmp.Entities.Where(emp => emp.EmployeeID == _EmployeeID).First().FirstName,
attendence.AttendenceDate.ToString("MM/dd/yyyy"),
attendence.TimeLost,
loadAbs.Entities.Where(abs => abs.AbsenceID == attendence.AbsenceID).First().AbsenceDescription,
(from inf in loadAtt.Entities
where inf.EmployeeID == _EmployeeID
where inf.AttendenceDate > DateTime.Now.AddDays(30 * -1)
where inf.Approved == false
select inf).Count() + 1,
attendence.UTOUsed
), null, null);

更具体地说,这一行:

    (loadEmp.Entities.Where(emp => emp.EmployeeID == _EmployeeID).First().EmployeeShiftID >= 2 ? "supervisor1" : "supervisor2"),

我需要在列表中再添加 4 名主管,但还没有想出一种不会让其他一切不愉快的方法。如果这个问题太简单,或者我遗漏了一些您可能需要知道的细节,我深表歉意,因为我说过我对这一切都很陌生。

最佳答案

此代码不必要地难以维护,而且效率低下且防御性差。代码正在检索员工 3 次。

loadEmp.Entities.Where(emp => emp.EmployeeID == _EmployeeID).First().Username

如果具有 _EmployeeID 的员工不存在,则上面的行(和其他行)将抛出异常。相反,您可以使用 FirstOrDefaultSingleOrDefault 如果您希望只有一名员工具有该 ID(应该是这种情况,因为它看起来像是该 ID 的主键实体)。如果 loadEmp 实际上是一个 Entity Framework DbContext 那么您也可以使用 Find

您可以执行一次此查询并将结果存储在局部变量中。

var employee = loadEmp.Entities.SingleOrDefault(emp => emp.EmployeeID == _EmployeeID);

if (employee == null)
{
// Handle employee not found
}

然后要根据员工获取主管字符串,您可以创建一个方法,该方法采用计算主管字符串所需的最少信息量,并将其传递给该方法以获取结果。

GetSupervisorRole(employee.EmployeeShiftID);

...

private string GetSupervisorRole(int employeeShiftID)
{
// Logic here
}

关于c# - 转变 ? : statement to handle more than 2 answers,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12221465/

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