使用for循环检查list元素是否等于list中的任何其他元素
本文关键字:list 元素 其他 任何 是否 for 循环 检查 使用 | 更新日期: 2023-09-27 18:04:33
我有这个类:
public class SortOrderModel
{
public string IdSort { get; set; }
public List<ContentPage> ContentPages { get; set; }
}
上面有listproperty的类是这个类的列表:
public class ContentPage
{
public string Id { get; set; }
public string ParentReference { get; set; }
public string Url { get; set; }
public int SortOrder { get; set; }
public string Title { get; set; }
}
我有这个for循环,我有SortOrderModel类作为视图的@model。现在我想检查第一个If语句:If Model.ContentPages[I]。ParentReference等于整个Model.ContentPages-list中的任何url - property。我已经试了很多方法,但就是不知道如何解决这个问题。
for (int i = 0; i < Model.ContentPages.Count; i++)
{
<ul>
if (Model.ContentPages[i].ParentReference == TODO) <-------
{
<li style="padding-left: 80px;">@Model.ContentPages[i].Title @Html.TextBoxFor(o => Model.ContentPages[i].SortOrder, new { @class = "sortBox" })</li>
}
else
{
<li style="padding-left: 40px;">@Model.ContentPages[i].Title @Html.TextBoxFor(o => Model.ContentPages[i].SortOrder, new { @class = "sortBox" })</li>
}
</ul>
}
尝试:
if (Model.ContentPages.Any(m => m.Url == Model.ContentPages[i].ParentReference))
不过,要小心延迟加载和多枚举。像Count
和Any
这样的东西在每次调用不同的变量时都会产生一个新的查询,如果所有的项都还没有被查询过。如果您先将Model.ContentPages
转换为一个列表,那么计数和其他LINQ查询将在相同的已经查询过的内存列表上运行。例如:var contentPages = Model.ContentPages.ToList();
for (int i = 0; i < contentPages.Count(); i++)
{
<ul>
if (contentPages.Any(m => m.Url == contentPages[i].ParentReference))
{
...