Skip to main content

Sorting an ICollection

Have you ever wanted to sort an ICollection? It took me awhile to figure this one out so I thought I should blog it.

I originally posted this quite awhile ago. Since then I have discovered a much easier way to sort a collection.
Here's an update on sorting collections using LINQ. Much simpler:
 
            var orderedList = customer.Users
            .OrderBy(x => x.UserType)
            .ToList();

And here is my original post on the subject. You decide which one looks easier.
 
private IList<EventReqFormSection> GetSections()
{
ICollection<EventReqFormSection> sections = EventReqFormSection.GetByEventReqFormId(_businessObject.Id, ObjectManager);

// sort by Display Sequence
List<EventReqFormSection> sortedValues = new List<EventReqFormSection>(sections);
sortedValues.Sort(new EventReqFormSection.DisplaySequenceSort());

return sortedValues;
}


The above function retrieves an ICollection puts it into a List object and calls the sort method using an IComparer Object which is a child object of . defined as follows:

 
public class DisplaySequenceSort : IComparer<EventReqFormSection>
{
public int Compare(EventReqFormSection x, EventReqFormSection y)
{
if (x == null)
throw new ArgumentNullException("x");
if (y == null)
throw new ArgumentNullException("y");

return x.DisplaySequence.CompareTo(y.DisplaySequence);
}
}

Comments

  1. OMG... Sooo much easier these days with LINQ.

    ReplyDelete
  2. Cool and that i have a keen give: House Renovation What To Do First home remodel cost

    ReplyDelete

Post a Comment

Popular posts from this blog

Oracle: sorting by an aliased column

I recently added an ad hoc column to a heavily used query with paging and sorting. To get the sorting to work on the new aliased column it was necessary to pull the "row_number() over" clause in to an outer query. I just wanted to document how this was done for future reference. SELECT * FROM (SELECT my_table.*, ROW_NUMBER () OVER ( ORDER BY UPPER ( DECODE ( pSortDir, 'asc', DECODE (pSortOrder, 'HasDemographicData', has_demographic_data pc.legal_name))), UPPER ( DECODE ( pSortDir, 'desc', DECODE (pSortOrder, 'HasDemographicData', has_demographic_data ...

Example of an Oracle script using a cursor

SET SERVEROUTPUT ON; declare cursor myCursor is (select auth_code, lastname, dob, driverlicensenumber, driverlicensestate from snap_driver_record where auth_date >= sysdate - 13 and auth_sequence=0); vAuthCode snap_driver_record.auth_code%type; vLastName snap_driver_record.lastname%type; vDob snap_driver_record.dob%type; vLicenseNumber snap_driver_record.driverlicensenumber%type; vLicenseState snap_driver_record.driverlicensestate%type; vCrashCount integer; vInspCount integer; vCrashTot integer; vInspTot integer; vDirCount integer; begin select count(*) into vDirCount from snap_driver_record where auth_date >= sysdate - 13 and auth_sequence=0; open myCursor; loop fetch myCursor into vAuthCode, vLastName, vDob, vLicenseNumber, vLicenseState; EXIT WHEN myCursor%NOTFOUND; -- get crash record count select count(*) into vCrashCount from crash_driver cd ...