#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 являются общими..