Sorting an IList in C#

前端 未结 15 2342
臣服心动
臣服心动 2020-11-28 06:36

So I came across an interesting problem today. We have a WCF web service that returns an IList. Not really a big deal until I wanted to sort it.

Turns out the IList

15条回答
  •  迷失自我
    2020-11-28 06:49

    Useful for grid sorting this method sorts list based on property names. As follow the example.

        List temp = new List();
    
        temp.Add(new MeuTeste(2, "ramster", DateTime.Now));
        temp.Add(new MeuTeste(1, "ball", DateTime.Now));
        temp.Add(new MeuTeste(8, "gimm", DateTime.Now));
        temp.Add(new MeuTeste(3, "dies", DateTime.Now));
        temp.Add(new MeuTeste(9, "random", DateTime.Now));
        temp.Add(new MeuTeste(5, "call", DateTime.Now));
        temp.Add(new MeuTeste(6, "simple", DateTime.Now));
        temp.Add(new MeuTeste(7, "silver", DateTime.Now));
        temp.Add(new MeuTeste(4, "inn", DateTime.Now));
    
        SortList(ref temp, SortDirection.Ascending, "MyProperty");
    
        private void SortList(
        ref List lista
        , SortDirection sort
        , string propertyToOrder)
        {
            if (!string.IsNullOrEmpty(propertyToOrder)
            && lista != null
            && lista.Count > 0)
            {
                Type t = lista[0].GetType();
    
                if (sort == SortDirection.Ascending)
                {
                    lista = lista.OrderBy(
                        a => t.InvokeMember(
                            propertyToOrder
                            , System.Reflection.BindingFlags.GetProperty
                            , null
                            , a
                            , null
                        )
                    ).ToList();
                }
                else
                {
                    lista = lista.OrderByDescending(
                        a => t.InvokeMember(
                            propertyToOrder
                            , System.Reflection.BindingFlags.GetProperty
                            , null
                            , a
                            , null
                        )
                    ).ToList();
                }
            }
        }
    

提交回复
热议问题