مرتب سازی داینامیک در linq
در بیشتر مواقع نیاز است که یک مجموعه از اشیایی را که داریم بر حسب فیلد های مختلفی از آن مجموعه مرتب کنیم ، به طور مثال مرتب سازی بر اساس : سن ، تاریخ ثبت نام ، نام و… برای انجام دادن این کار میتوان متدهایی مختلفی را نوشت و یا هر کجا که نیاز بود این کار را انجام دهید . در این مقاله قصد داریم متدی بنویسیم که بر اساس پارامتر ورودی آن عمل مرتب سازی را انجام دهد ….
ابتدا کلاس Person زیر را با خصوصیات زیر ایجاد کنید :
1 2 3 4 5 6 |
public class Person { public int Id { get; set; } public string Name { get; set; } public string Age { get; set; } } |
و یک Extension Method ایجاد خواهیم کرد که بر روی لیستی از اشیا از نوع Person اجرا شود . برای این کار به صورت زیر عمل خواهیم کرد :
1 2 3 4 5 6 7 8 |
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(); } } |
و در پایان برای فراخوانی متد فوق و ایجاد مرتب سازی بر روی لیست ها به صورت زیر عمل خواهیم کرد :
1 2 3 4 5 6 |
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}, }; |
1 |
var OrderdList = People.OrderByPersonBy("Name"); |
دیدگاهتان را بنویسید
برای نوشتن دیدگاه باید وارد بشوید.