比较2个列表,如果匹配,则更改1的状态

本文关键字:状态 2个 列表 如果 比较 | 更新日期: 2023-09-27 18:30:05

使用MVC,我有一个30个预订的列表,其中每个状态的默认值都设置为可用。

public class Day
{
  public int dayNumber;
  public Status status;
}
public enum Status
{
   available,
   booked,
   closed
}
List<Day> ListOfBookings = new List<Day>();
for (int i = 1; i <= 30; i ++) 
{
  Day _day = new Day();
  _day.dayNumber = i;
  _day.status = Status.available;
  ListOfBookings.Add(_day);
}

我想将它们与我的查询进行比较:

var bookingQuery = _foodPodAvailability.GetAll();

它得到表中所有实际预订的列表。我想使用此预订查询,如果预订了"日期",我想将ListOfBookings的状态更改为预订,当天

不确定这里的实际逻辑,我是否可以通过bookingQuery进行foreach,并在确定日期的地方加入?

比较2个列表,如果匹配,则更改1的状态

如果您的bookingQuery列表包含具有dayNumber属性的元素,我只会这样做:

foreach(var elm in bookingQuery)
    ListOfBookings[elm.dayNumber - 1].status = Status.booked;

而且,你似乎想看看一个月中的哪些日子被预订了,所以你不应该得到所有的记录,只应该得到当月的记录。

作为替代方案,您也可以执行此

var bookingQuery = _foodPodAvailability.GetAll();
List<Day> ListOfBookings = new List<Day>();
for (int i = 1; i <= 30; i ++) 
{
  Day _day = new Day();
  _day.dayNumber = i;
  _day.status = bookingQuery.Where(w=>w.dayNumber == i).Any()?Status.booked:Status.available;
  ListOfBookings.Add(_day);
}