مرتب سازی داینامیک در linq

در بیشتر مواقع نیاز است که یک مجموعه از اشیایی را که داریم بر حسب فیلد های مختلفی از آن مجموعه مرتب کنیم ، به طور مثال مرتب سازی بر اساس : سن ، تاریخ ثبت نام ، نام و... برای انجام دادن این کار میتوان متدهایی مختلفی را نوشت و یا هر کجا که نیاز بود این کار را انجام دهید . در این مقاله قصد داریم متدی بنویسیم که بر اساس پارامتر ورودی آن عمل مرتب سازی را انجام دهد ....

ابتدا کلاس Person زیر را با خصوصیات زیر ایجاد کنید :

 public class Person
    {
        public int Id { get; set; }
        public string Name { get; set; }
        public string Age { get; set; }
    }

 و یک Extension Method ایجاد خواهیم کرد که بر روی لیستی از اشیا از نوع Person اجرا شود . برای این کار به صورت زیر عمل خواهیم کرد :

   public static class Extensions
   {
       public static List<Person> OrderByPersonBy(this List<Person> people, string Param)
       {

           return people.OrderBy(x => (typeof(Person).GetProperty(Param)).GetValue(x, null)).ToList();
       }
   }

و در پایان برای فراخوانی متد فوق و ایجاد مرتب سازی بر روی لیست ها به صورت زیر عمل خواهیم کرد :

  List<Person> People = new List<Person> {
            
            new Person{Id=2,Name="osman",Age=22},
            new Person{Id=1,Name="mohammad",Age=20},
            new Person{Id=4,Name="ali",Age=27},
            };

 

var OrderdList = People.OrderByPersonBy("Name");

 


توسط : عثمان رحیمی  1 ماه قبل ، جمعه 1 اسفند 1393 ساعت 22:20  0  3812

نظر شما برای ما مهم است و به ما در بهبود سایت کمک میکند.


ارسال نظر
  • نام (اختیاری ) :
  • پست الکترونیک :
  • توضیحات :

مطالب مرتبط