Обобщения в Linq с использованием нескольких предложений Where

#linq #generics #linq-to-sql

#linq #обобщения #linq-to-sql

Вопрос:

Мне нужно написать универсальный метод поиска, который я мог бы использовать несколько раз. Мой метод заключается:

 public List<GoldMakers> listofRecoverd_Reuse(int? EmployeeID, DateTime? Startdate, DateTime? EndDate)
    {
    List<GoldMakers> RecoveredGold = db.GoldMakers.Include(e => e.tbl_Employees)
        .Where(x => (x.R_Employee_ID == EmployeeID || EmployeeID == null) 
        amp;amp; (x.R_Date >= Startdate || Startdate == null) amp;amp; (x.R_Date <= EndDate || EndDate == null)).ToList();
    return RecoveredGold;
}
  

Я знаю, что этого можно достичь с помощью обобщений, но я не знаю, как работать с linq с использованием обобщений.

 public List<T> search<T>(T modelClass, int? EmployeeID, DateTime? Startdate, DateTime? EndDate)
{
    list<T> result = db.Table<T>().where ........
    return resu<
} 
  

Спасибо.

Ответ №1:

Можете ли вы попробовать, как показано ниже:

 public List<T> search<T>(DbSet<T> modelClass, int? EmployeeID, DateTime? Startdate, DateTime? EndDate)  where T : class, new()
{
    list<T> result = modelClass.where ........
    return resu<
} 
  

Вы можете назвать это следующим образом

 var tbl1 = search(db.table1, param1, param2, param3);
var tbl2 = search(db.table2, param1, param2, param3);
  

Комментарии:

1. что, если мне придется использовать include или orderby?

2. Вы хотите сделать это в этом общем поиске или после его вызова?

3. Я мог бы использовать какой-нибудь внешний параметр для упорядочивания, например, я хочу упорядочить результат с его идентификатором первичного ключа, а Includes являются общими..