C#:将 for(each) 循环组合成高效代码

标签 c# asp.net-mvc loops razor

这是我的时间表代码的一部分

两个问题:

  1. 如何避免循环遍历时间和房间预订以检查它是否存在于给定的时间段内。有没有一种方法可以只说“这次,这个列表中是否有匹配项,它的 ID 是什么”

  2. 我是否可以将外部 td 设置为类 bgred,而不是跨度。 (请注意,一个时间段内可能有多个预订,因此将 td 排除在 foreach 循环之外。)

<tr>
    <th></th>

        @for (int i = 9; i <= 17; i++)
        {
        <th>@i:00</th>
        }
</tr>

    @foreach (var RoomNo in ViewBag.Rooms)      
    {

        <tr>

            <th>@RoomNo</th>

           @for (int i = 9; i <= 17; i++)
           {
               <td>
               @foreach (var roombooking in ViewBag.RoomBookings)
               {
                   DateTime DateCheckStart = DateTime.Parse(ViewBag.Date.ToShortDateString() + " " + i.ToString() + ":00");
                   DateTime DateCheckEnd = DateTime.Parse(ViewBag.Date.ToShortDateString() + " " + i.ToString() + ":59");
                   if (DateCheckStart < roombooking.EndDateTime && DateCheckEnd > roombooking.StartDateTime && roombooking.RoomNo == RoomNo)
                   {
                     <span class="bgred"> @roombooking.RentalNo</span>
                   }
               }
               </td>
           }
        </tr>

     }

最佳答案

像这样的东西怎么样

@foreach (var roombooking in ViewBag.RoomBookings.Where( /* in range */ ))

这样你就可以删除你的第一个 for 循环

关于C#:将 for(each) 循环组合成高效代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8255682/

相关文章:

asp.net-mvc - 设置配置文件以在 asp net mvc 4 中存储参数的最佳方法

c# - `Task` 上下文可以在其第一个 `await` 之前切换吗?

c# - NUnit - 如何动态运行测试子集

c# - 如何将带有自定义 header 的任意 JSON 数据发送到 REST 服务器?

c# - asp.net mvc 区域和主站点具有/相同的 Controller 名称

asp.net-mvc - Asp.Net MVC Controller - 操作和 View 映射元数据

java - 使用 3 个循环时如何在单独的行中打印

python - 如何逐行循环遍历两个文件?

c - 为什么这个带有指针的 for 循环不会去任何地方?

c# - 编辑图像的细节