Umbraco Forms - How to display the last 5 records

577 Views Asked by At

I would like to display records from an Umbraco forms on a page. So far, I managed to display:

  • total numbers of records
  • all records where "Display my name" value is TRUE

How do I limit it to display only 5 newest records (where "Display my name" value is TRUE)?

My codes below:

<ul id="formData">
    @{int i = 0;} 
    @foreach (dynamic record in Library.GetApprovedRecordsFromPage(@CurrentPage.Id).OrderBy("Created descending"))
    {  
        if (@record.GetField("Display my name").Values[0].ToString() == "True")
        {
            <li>        
                Name: @record.GetField("Name").Values[0]<br />
                Email: @record.GetField("Email").Values[0]<br />
                Display my name: @record.GetField("Display my name").Values[0]<br /> 
                Created: @record.Created.ToString("dd MMMM yyy")<br />
            </li>
        }
        i++; 
    }     
</ul>
<h4>Total data: @i</h4>

2

There are 2 best solutions below

7
On

You might be able to put the property value check into a .Where(...)? So

.Where(x => x.GetField("Display my name").Values[0].ToString() == "True").OrderBy(whatevs).Take(5)
0
On

I would recommend you to use this code for getting records:

@{
    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();
        }
    }
}