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

时间:2013-09-02 15:25:38

标签: c# asp.net asp.net-mvc-3 list

使用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();

获取表格中所有实际预订的列表。 我想使用这个bookingQuery并预订了'Date',我希望将ListOfBookings的状态更改为当天预订

不确定这里的实际逻辑,我是否通过bookingQuery做了一个foreach,并加入了日期的地方?

2 个答案:

答案 0 :(得分:1)

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

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

您似乎也希望查看本月的哪几天被预订,因此您不应该获取所有记录,只能记录当月的记录。

答案 1 :(得分:1)

作为替代方案,您也可以这样做

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);
}