BusinessProcessOrderBy Property

Gets or sets the value determining order in which the rows are ordered

Definition

Namespace: Firefly.Box
Assembly: Firefly.Box (in Firefly.Box.dll) Version: debug-master-v:33791
C#
public Sort OrderBy { get; set; }

Property Value

Sort

Remarks

Performance tip - Any OrderBy that is based only on columns that are part of the Task Main Query(*) will be performed by the database.
Otherwise the OrderBy
will be performed in memory, resulting in a performance penalty in cases where many rows are involved
(*)Task Main Query - includes the entity defined in the From property, and any entity that is part of a relation (as defined in the Relations property collection) that is of type Join or OuterJoin

Example

Using Sort
This example is in the form of Unit Tests. It references the NUnit framework. This framework can be downloaded from www.NUnit.org. For more information about unit testing visit: www.NUnit.org.
This example is based on test data. The code for the entities included in this test data can be found in the documentation of Entity
C#
using System;
using System.Collections.Generic;
using System.Text;
using NUnit.Framework;
using Firefly.Box;
using Firefly.Box.Testing;

namespace TestFirefly.Box.Documentation
{
    [TestFixture]
    public class DemoOrderBy
    {
        [Test]
        public void UsingDefaultInstance()
        {
            var jobs = new Pubs.Jobs();
            jobs.InitializeWithTestData();

            var bp = new BusinessProcess
                         {
                             From = jobs,
                         };
            bp.Where.Add(jobs.Id.IsLessOrEqualTo(5));
            bp.OrderBy.Segments.Add(jobs.Id, SortDirection.Descending);

            string result = "";
            bp.ForEachRow(() =>
                              {
                                  result += jobs.Id + "\n";
                              });
            result.ShouldBe(" 5\n" +
                            " 4\n" +
                            " 3\n" +
                            " 2\n" +
                            " 1\n");
        }
        [Test]
        public void UsingNewInstance()
        {
            var jobs = new Pubs.Jobs();
            jobs.InitializeWithTestData();

            var bp = new BusinessProcess
            {
                From = jobs,
            };
            bp.Where.Add(jobs.Id.IsLessOrEqualTo(5));
            var sort = new Sort();
            sort.Segments.Add(jobs.MinLevel);
            sort.Segments.Add(jobs.Id, SortDirection.Descending);

            bp.OrderBy = sort;
            string result = "";
            bp.ForEachRow(() =>
            {
                result += jobs.Id + " - " + jobs.MinLevel + "\n";
            });
            result.ShouldBe(" 1 -  10\n" +
                            " 5 - 150\n" +
                            " 4 - 175\n" +
                            " 3 - 175\n" +
                            " 2 - 200\n");
        }

        [Test]
        public void ReverseRowOrder()
        {
            var jobs = new Pubs.Jobs();
            jobs.InitializeWithTestData();

            var bp = new BusinessProcess
            {
                From = jobs,
            };
            bp.Where.Add(jobs.Id.IsLessOrEqualTo(5));

            bp.OrderBy.Segments.Add(jobs.MinLevel);
            bp.OrderBy.Segments.Add(jobs.Id, SortDirection.Descending);
            bp.OrderBy.Reversed = true;

            string result = "";
            bp.ForEachRow(() =>
            {
                result += jobs.Id + " - " + jobs.MinLevel + "\n";
            });
            result.ShouldBe(" 2 - 200\n" +
                            " 3 - 175\n" +
                            " 4 - 175\n" +
                            " 5 - 150\n" +
                            " 1 -  10\n");
        }
    }
}

See Also