I'm using MVC 5 + EF 6 + MySQL Connector/NET 6.8.6,the Linq is correct without “Where<T>(whereLambda)”,Follow is the code:
public List<T> GetList<S, K>(int Top, Expression<Func<T, bool>> whereLambda, Order<T, S> orderByLambda, params Order<T, K>[] orderByLambdaParams)
{
var tempData = orderByLambda.isAsc ? db.Set<T>().OrderBy<T, S>(orderByLambda.orderByExpression) : db.Set<T>().OrderByDescending<T, S>(orderByLambda.orderByExpression);
if (orderByLambdaParams == null || orderByLambdaParams.Length == 0)
{
return tempData.
Where<T>(whereLambda).
Take<T>(Top).
AsNoTracking().
ToList();
}
else
{
foreach (Order<T, K> expression in orderByLambdaParams)
{
tempData = expression.isAsc ? tempData.ThenBy(expression.orderByExpression) : tempData.ThenByDescending(expression.orderByExpression);
}
return tempData.
Where<T>(whereLambda).
Take<T>(Top).
AsNoTracking().
ToList();
}
}
public List<T> GetList<S, K>(int Top, Expression<Func<T, bool>> whereLambda, Order<T, S> orderByLambda, params Order<T, K>[] orderByLambdaParams)
{
var tempData = orderByLambda.isAsc ? db.Set<T>().OrderBy<T, S>(orderByLambda.orderByExpression) : db.Set<T>().OrderByDescending<T, S>(orderByLambda.orderByExpression);
if (orderByLambdaParams == null || orderByLambdaParams.Length == 0)
{
return tempData.
Where<T>(whereLambda).
Take<T>(Top).
AsNoTracking().
ToList();
}
else
{
foreach (Order<T, K> expression in orderByLambdaParams)
{
tempData = expression.isAsc ? tempData.ThenBy(expression.orderByExpression) : tempData.ThenByDescending(expression.orderByExpression);
}
return tempData.
Where<T>(whereLambda).
Take<T>(Top).
AsNoTracking().
ToList();
}
}