使用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>
            }

使用for循环检查list元素是否等于list中的任何其他元素

尝试:

if (Model.ContentPages.Any(m => m.Url == Model.ContentPages[i].ParentReference))
不过,要小心延迟加载和多枚举。像CountAny这样的东西在每次调用不同的变量时都会产生一个新的查询,如果所有的项都还没有被查询过。如果您先将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))
        {
            ...
相关文章: