Linq中的泛型使用多个Where子句

时间:2019-03-14 09:49:38

标签: linq generics 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) 
        && (x.R_Date >= Startdate || Startdate == null) && (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 result;
} 

谢谢。

1 个答案:

答案 0 :(得分:0)

您可以尝试以下方法吗:

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

您可以按以下方式调用它

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