مرجع تخصصی برنامه نویسان

انجمن تخصصی برنامه نویسان فارسی زبان

کاربر سایت

سمیه حاتمی

عضویت از 1394/06/24

تابع Get در داخل Generic Repository

  • شنبه 16 مرداد 1395
  • 16:00
تشکر میکنم

سلام دوستان

امکانش هست کسی با توضیح کافی بفرمایند که چرا پارامتر دوم در تابع زیر 

 public virtual IEnumerable<TEntity> Get(Expression<Func<TEntity, bool>> filter = null,
           Func<IQueryable<TEntity>, IOrderedQueryable<TEntity>> orderBy = null,
           string includes="")
       {
           IQueryable<TEntity> query = _dbSet;

           if (filter != null)
           {
               query = query.Where(filter);
           }


           foreach (string s in includes.Split(new[] { ',' }, StringSplitOptions.RemoveEmptyEntries))
           {
               query = query.Include(s);
           }

           if (orderBy != null)
           {
               query = orderBy(query);
           }

        

           return query;
       }

اولا وقتی قرار است فراخوانی شود به صورت زیر فراخوانی می شود 

repository.Get(x => x.FirstName = "Bob",q => q.OrderBy(s => s.LastName));

ثاینا چرا در داخل تابع به صورت orderby(query) است ...یعنی ورودی گرفته است ...

مگر نه اینکه یک func است و توابعی از جنس ورودی و خروجی func که برای آن تعریف کرده ایم را می پذیرد ...چرا رفتار متفاوتی دارد ...در ضمن در داخل سی شارپ تابعی که IorderedQueryAlble باز گرداند فرمت زیر را دارد 

public static IOrderedQueryable<TSource> OrderBy<TSource, TKey>(
    this IQueryable<TSource> source,
    Expression<Func<TSource, TKey>> keySelector
)

خواهشمند است به تفضیل بفرمایید .... چون جستجو کردم و جواب قانع کننده نگرفتم ...ممنونم 

پاسخ های این پرسش

تعداد پاسخ ها : 0 پاسخ
در حال حاضر هیچ پاسخی ارسال نشده است
کاربرانی که از این پست تشکر کرده اند

هیچ کاربری تا کنون از این پست تشکر نکرده است

اگر نیاز به یک مشاور در زمینه طراحی سایت ، برنامه نویسی و بازاریابی الکترونیکی دارید

با ما تماس بگیرید تا در این مسیر همراهتان باشیم :)