У меня этот класс:
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>
}
Пытаться:
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))
{
...