سه شنبه 24 تیر 1393 - 10:40
Linq extension method
بسم الله الرحمن الرحیم
می خواهی
بسم الله الرحمن الرحیم
می خواهیم یک Extesion Method مانند متدهای Linq برای Model ایی خاص بنویسیم.
دو نکته را برای نوشتم متدهای توسعه (Extension Method) باید رعایت کنید:
1- متد را باید در کلاسی بنویسید که از نوع static باشد
2- namespace شما باید با namespace کلاسی که می خواهید برای آن Extension Method بنویسید یکسان باشد
ما می خواهیم وقتی از شی DbContext مدل Active را انتخاب می کنیم مانند متد ()FirstOrDefault لینک (LINQ) یک متد برای اجرای یک دستور خاص نمایش داده شود:
public static class Extensions
{
public IQueryable<T> Active<T>(this IQueryable<T> source)
where T : YourEntityType
{
return source.Where(a => ((a.publishEnd > DateTime.Now) || (a.publishEnd == null))
&& ((a.publishStart <= DateTime.Now) || (a.publishStart == null))
&& a.active == true);
}
}
برای فراخوانی متد به صورت زیر می توانیم عمل کنیم:
var item = db.myTable.Active().SingleOrDefault(...);