【发布时间】:2016-09-08 13:09:19
【问题描述】:
我想使用 foreach 遍历一个集合,但我希望每个对象的属性来确定它在迭代中出现的位置。为了从根本上实现这一点,我使用了 2 个 foreach 循环首先获取主列表,然后获取辅助列表。该值为 DEPtxt,包含该值的属性为 Course_Departments 和 Course_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
-
这就是我所做的,我想知道是否有更好的方法,因为这似乎会导致不必要的开销。
-
在我看来,您应该接受我的回答并提前对项目进行排序并通过排序列表