September 2009
M T W T F S S
« Aug   Oct »
 123456
78910111213
14151617181920
21222324252627
282930  

Sorting Generic List

//Sorting List<> case Item is ListItem
//==============================================
List<ListItem> tempList = new List<ListItem>();

tempList.Insert(0, new ListItem("------------- Vehicle Reports 8"));
tempList.Insert(0, new ListItem("------------- Vehicle Reports 2"));
tempList.Insert(0, new ListItem("------------- Vehicle Reports 4"));

// sort asc
tempList.Sort(delegate(ListItem p1, ListItem p2) {
                    return p1.Text.CompareTo(p2.Text);
                });
// sort desc
tempList.Sort(delegate(ListItem p1, ListItem p2) {
                    return p2.Text.CompareTo(p1.Text);
                });

//Sorting List<> case Item is Object Class
//===============================================
//Apply to sorting in GridView
//===============================================
SortData(e.SortExpression, NewSortDirection, ref listMsgTicker);
//===============================================

#region method for sorting

    private void SortData(string _expression, SortDirection _direction,
            ref List<MsgTicker> data)
    {
        //sort asc ==
        if (_direction == SortDirection.Ascending)
            data.Sort(delegate(MsgTicker a, MsgTicker b)
            {
                switch (_expression)
                {
                    case "MsgHeader": return a.MsgHeader.CompareTo(b.MsgHeader);
                    case "CreatedDate": return a.CreatedDate.CompareTo(b.CreatedDate);
                    case "ModifiedDate": return a.ModifiedDate.CompareTo(b.ModifiedDate);
                    default:
                        throw new NotImplementedException("Type of property not implemented yet");
                }
            });

        //sort desc ==
        if (_direction == SortDirection.Descending)
            data.Sort(delegate(MsgTicker a, MsgTicker b)
            {
                switch (_expression)
                {
                    case "MsgHeader": return b.MsgHeader.CompareTo(a.MsgHeader);
                    case "CreatedDate": return b.CreatedDate.CompareTo(a.CreatedDate);
                    case "ModifiedDate": return b.ModifiedDate.CompareTo(a.ModifiedDate);
                    default:
                        throw new NotImplementedException("Type of property not implemented yet");
                }
            });

        //return data;
    }

    #endregion
ref: http://dotnetslackers.com/Community/blogs/simoneb/archive/2007/06/20/How-to-sort-a-generic-List_3C00_T_3E00_.aspx

Leave a Reply

 

 

 

You can use these HTML tags

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>