【问题标题】:Multiple foreach loops in razor剃刀中的多个foreach循环
【发布时间】:2016-09-08 13:09:19
【问题描述】:

我想使用 foreach 遍历一个集合,但我希望每个对象的属性来确定它在迭代中出现的位置。为了从根本上实现这一点,我使用了 2 个 foreach 循环首先获取主列表,然后获取辅助列表。该值为 DEPtxt,包含该值的属性为 Course_DepartmentsCourse_Departments2

@foreach (ContentNode node in pgnodes.Where(x => x.Data.Course_Departments.ToString() == DEPtxt)){

                <li class="sys_subitem" style="display: list-item;"><a title="@node.Title" href="@node.Path">@node.Title</a></li>  
            }
            @foreach (ContentNode node in pgnodes.Where(x => x.Data.Course_Departments2.ToString() == DEPtxt)){

                <li class="sys_subitem" style="display: list-item;"><a title="@node.Title" href="@node.Path">@node.Title</a></li>  
            }

为了放入上下文中,Linq 查询已抓取在对象的 2 个属性之一中具有字符串值的所有对象。我希望 foreach 循环首先显示 Course_Departments 中的所有对象,然后显示 Course_Departments2 中的所有对象。

多个 foreach 循环是最好的方法吗?

我必须对查询进行排序吗?我是否必须创建一个对其进行排序的列表?我想尽可能少地访问数据存储,并让剃须刀引擎完成大部分工作。

谢谢!

【问题讨论】:

  • 集合 1 和 2 有什么根本不同吗?
  • 它是从同一个集合中获取的,不同之处在于一个循环的值在主主属性中,另一个循环在辅助属性中。
  • 你不能只循环同样的事情,而是做 x => x.Data.Course_Departments.value1.ToString() == DEPtxt 和 x => x.Data.Course_Departments.value2.ToString( ) == DEPtxt
  • 这就是我所做的,我想知道是否有更好的方法,因为这似乎会导致不必要的开销。
  • 在我看来,您应该接受我的回答并提前对项目进行排序并通过排序列表

标签: c# razor foreach


【解决方案1】:

如果您尝试从集合中获取要显示的已排序项目列表,则应始终对项目进行排序并尽可能在视图之外进行操作。

【讨论】:

  • 这应该作为评论发布,因为这并没有真正提供任何解决方案/答案,这更像是一个没有示例/源代码的建议。
  • 这部分回答了几个问题,并非所有答案都绝对需要示例/源代码。特别是,因为这些问题不是针对编码错误,而是针对实践。
  • 你可以提供一些例子来帮助他更好地使用它,而不是使用多个 foreach 循环。
  • 我应该如何准确地告诉他如何对他的物品进行分类?此外,他并不是在要求一个例子,而是尽可能地寻求更好的方法。
猜你喜欢
  • 1970-01-01
  • 2012-06-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-08-18
  • 1970-01-01
  • 2013-08-05
相关资源
最近更新 更多