C# Umbraco表单-如何显示最后5条记录

C# Umbraco表单-如何显示最后5条记录,c#,razor,umbraco,umbraco-contour,C#,Razor,Umbraco,Umbraco Contour,我想在页面上显示来自Umbraco表单的记录。到目前为止,我成功地展示了: 记录总数 “显示我的姓名”值为真的所有记录 如何将其限制为仅显示5条最新记录(其中“显示我的姓名”值为TRUE) 我的代码如下: @{int i=0;} @foreach(Library.GetApprovedRecordsFromPage(@CurrentPage.Id).OrderBy(“创建的”)中的动态记录) { if(@record.GetField(“Display my name”).Value

我想在页面上显示来自Umbraco表单的记录。到目前为止,我成功地展示了:

  • 记录总数
  • “显示我的姓名”值为真的所有记录
如何将其限制为仅显示5条最新记录(其中“显示我的姓名”值为TRUE)

我的代码如下:

    @{int i=0;} @foreach(Library.GetApprovedRecordsFromPage(@CurrentPage.Id).OrderBy(“创建的”)中的动态记录) { if(@record.GetField(“Display my name”).Values[0].ToString()=“True”) {
  • 名称:@record.GetField(“名称”).Values[0]
    电子邮件:@record.GetField(“电子邮件”).Values[0]
    显示我的名字:@record.GetField(“显示我的名字”)。值[0]
    已创建:@record.Created.ToString(“dd-MMMM-yyy”)
  • } i++; }

总数据:@i
您可能可以将属性值检查放入.Where(…)?所以


我建议您使用以下代码获取记录:

@{
    using (var formStorage = new FormStorage())
    {
        using (var recordStorage = new RecordStorage())
        {
            var form = formStorage.GetForm(Guid.Parse("ede58fd2-9eff-4f88-a5d6-053042983681"));
            var records = recordStorage.GetAllRecords(form).Where(x => x.UmbracoPageId == Model.Content.Id && x.State == FormState.Approved).Where(x => x.GetRecordField("Display my name").Equals("True")).OrderByDescending(x => x.Created).ToList();
        }
    }
}

感谢您的回复,但需要添加。在OrderBy之后加上(5)。将所有记录限制为5,因此总记录数将始终为5。@mertamu更新了我的答案,抱歉误解:-)我为延迟回复道歉。所以我需要嵌套foreach,对吗?每个的第二个将有一个.Where()?不,只有一个foreach-The.Where紧跟在Library.GetApprovedRecordsFromPage()调用之后。
@foreach(Library.GetApprovedRecordsFromPage(@CurrentPage.Id)中的动态记录)。其中(x=>x.GetField(“显示我的名字”).Values[0]。ToString()==“True”).OrderBy(“创建的”))
在我运行该页面时向我发送“服务器错误”消息。我错过什么了吗?谢谢@jannik anker
@{
    using (var formStorage = new FormStorage())
    {
        using (var recordStorage = new RecordStorage())
        {
            var form = formStorage.GetForm(Guid.Parse("ede58fd2-9eff-4f88-a5d6-053042983681"));
            var records = recordStorage.GetAllRecords(form).Where(x => x.UmbracoPageId == Model.Content.Id && x.State == FormState.Approved).Where(x => x.GetRecordField("Display my name").Equals("True")).OrderByDescending(x => x.Created).ToList();
        }
    }
}