我正在上课:
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循环,将视图中的类SortOrderModel作为@model。 我现在要检查第一个if语句:如果Model.ContentPages [i] .ParentReference等于整个Model.ContentPages列表中的Any Url-propery。我尝试了很多方法,但不知道如何解决它。
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>
}
答案 0 :(得分: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))
{
...