【发布时间】:2013-11-16 02:12:37
【问题描述】:
我有一个通用方法,它应该返回任何东西的 IEnumerable。此外,用户可以选择过滤掉返回列表。我遇到的问题是列表没有被过滤。例如,我试图从数据库中获取用户列表;我使用这种语法调用方法
var users = unit.UserRepository.GetAll(x => x.UserName == username);
我期望一个用户,但它返回数据库中的所有用户。
这是我的通用方法:
public IEnumerable<TEntity> GetAll(Expression<Func<TEntity, bool>> filter =null,
Func<IQueryable<TEntity>, IOrderedQueryable<TEntity>> orderby = null, string property = "")
{
IQueryable<TEntity> query = dbSet;
if (filter != null)
{
query.Where(filter);
}
if (property != null)
{
foreach (var p in property.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries))
{
query = query.Include(p);
}
}
if(orderby != null)
{
return orderby(query);
} else
{
return query.ToList();
}
}
这里有什么我遗漏的吗?
【问题讨论】:
-
GetAll函数似乎没有什么问题,你确定db中有符合条件的数据吗?
标签: c# asp.net-mvc-3 asp.net-mvc-4 generics