我有接受Linq Where子句的表达式的方法。有时候我会忽略Where子句,不要使用它。Linq将null传递给Where子句
我曾试图通过空的方法是这样
GetUsersView(null)
却得到了异常。这个如何正确?
private IQueryable<UserView> GetUsersView(Expression<Func<User, bool>> expression)
{
return _userRepository.GetAll().
Where(expression).
Select(p => new UserView
{
Id = p.Id,
Active = p.Orders.Any(c => c.Active && (c.TransactionType == TransactionType.Order || c.TransactionType == TransactionType.Subscription)),
DateStamp = p.DateStamp,
Email = p.Email,
FirstName = p.FirstName,
LastName = p.LastName,
Message = p.Message,
UsersManager = p.Orders.Select(o => o.Product).Any(w => w.UsersManager && w.Active)
});
}
你为什么不检查你的表达式为空?如果它为null,则返回_userRepository.GetAll()。否则,返回你已有的东西。 – Tomtom 2013-02-25 12:07:01
你尝试过'GetUsersView(true)'吗? – 2013-02-25 12:07:33