【问题标题】:Nothing gets added to Object list没有任何东西被添加到对象列表中
【发布时间】:2019-03-21 11:00:53
【问题描述】:

我有一个对象列表,我只想在其中添加一个新对象,如果列表中不包含具有匹配属性的对象,我正在尝试这样做:

reservation = new ForecastReservationAssignees();


string extractWeekNumber = Regex.Match(weekNumberValue.Value.ToString(), @"\d+").Value;

int weekNumber = Int32.Parse(extractWeekNumber);


if ((reservationAssigneeList.Any(i => i.AvailableFor != weekNumber))
    && (reservationAssigneeList.Any(i => i.EmployeeName != employeeNameValue.Value.ToString())))
{
    reservation.AvailableFor = weekNumber;


    // Add it.
    reservation.EmployeeName = employeeNameValue.Value.ToString();
    // Add object.
    reservationAssigneeList.Add(reservation);
}

首先我创建一个新对象,它具有属性EmployeeName,一个字符串和AvailableFor,它是一个int。我从我在别处得到的字符串中提取数字并将数字解析为 int。然后是 if 语句。在这里,我想检查列表是否已经包含这些属性。基本上我想要的是,只添加一个员工一次,然后该员工可以有多个AvailableFor,这是几周,虽然只有同一周一次。所以示例是:

> Employee1

Week 11

Week 12

Week 13

因此,没有员工姓名两次,每个员工也没有每周两次。不过,多名员工的周数可能相同,因此第一名和第二名员工的周数相同。

当我运行上面的代码时,我什么也没有得到,什么也没有添加。我可能做错了什么?

【问题讨论】:

  • 你有没有试过调试看看是否进入了if块?
  • 将 IF 语句分解成更小的部分,并找出哪个部分失败。
  • 是的,我试过调试,它没有进入

标签: c# list linq


【解决方案1】:

您的if 声明不正确:

if ((reservationAssigneeList.Any(i => i.AvailableFor != weekNumber)) && (reservationAssigneeList.Any(i => i.EmployeeName != employeeNameValue.Value.ToString())))

您是说如果任何项目的 AvailableFor 不匹配 weekNumber,并且任何项目的员工姓名不等于员工姓名值。

你需要把它们结合起来。

if ((reservationAssigneeList.Any(i => i.AvailableFor != weekNumber && i.EmployeeName != employeeNameValue.Value.ToString())))

这样您将只检查每个单独的项目以查看它们是否匹配。

【讨论】:

  • 我尝试了你的 if 语句,但它仍然没有进入 if 语句,也许我在其他地方做错了什么,我会回来的。谢谢。
  • 好吧,如果我做了 == 而不是 != 并输入 !在 if 语句的开头它起作用。
【解决方案2】:

像您一样拨打两个.Any() 电话将独立检查这两个电话,即它们不必属于同一预订。试试这个作为你的 if 语句

if (reservationAssigneeList.Any(i => (i.AvailableFor != weekNumber) && (i.EmployeeName != employeeNameValue.Value.ToString()) ) )
{

这应该是这样的,所以相同的预订必须在 AvailableFor 和 EmployeeName 上匹配不匹配

【讨论】:

  • 我尝试了你的 if 语句,但它仍然没有进入 if 语句,也许我在其他地方做错了什么,我会回来的。谢谢
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-10-29
  • 1970-01-01
  • 2016-07-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-04-30
相关资源
最近更新 更多