проверить, равен ли элемент списка любому другому элементу в списке, используя цикл for

1

У меня этот класс:

public class SortOrderModel
{
    public string IdSort { get; set; }
    public List<ContentPage> ContentPages { get; set; }
}

Вышеприведенный класс, имеющий listpropery, представляет собой список этого класса:

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-loop, ведь у класса класс SortOrderModel есть @model для представления. Теперь я хочу проверить первый оператор if: если Model.ContentPages [i].ParentReference равно Any Url-propertyy во всем списке Model.ContentPages. Iv'e пытался так много способов, но не знал, как его решить.

            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-loop
asp.net-mvc

1 ответ

2
Лучший ответ

Пытаться:

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))
        {
            ...
  • 0
    Спасибо за ваш ответ. Он делает то, что я просил. Так что спасибо тебе! Но при запуске кода выяснилось, что это было что-то еще, что я хотел сделать. Но все равно спасибо
  • 0
    Еще раз спасибо за ваш ответ! Но, как я уже сказал, я понял, что я хотел чего-то другого. Поэтому я опубликовал новый вопрос с вещами, которых я хочу достичь. Пожалуйста, посмотрите, если хотите! =) ссылка

Ещё вопросы

Сообщество Overcoder
Наверх
Меню