我正在试图弄清楚如何使用这个orderBy参数。我不确定我想要传递什么。
public virtual IEnumerable<TEntity> Get(
Expression<Func<TEntity, bool>> filter = null,
Func<IQueryable<TEntity>, IOrderedQueryable<TEntity>> orderBy = null,
string includeProperties = "")
{
IQueryable<TEntity> query = dbSet;
if (filter != null)
{
query = query.Where(filter);
}
foreach (var includeProperty in includeProperties.Split
(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries))
{
query = query.Include(includeProperty);
}
if (orderBy != null)
{
return orderBy(query).ToList();
}
else
{
return query.ToList();
}
}
答案 0 :(得分:15)
如果您从msdn文章中读到这篇文章
“代码Func,IOrderedQueryable&gt; orderBy也意味着调用者将提供lambda表达式。但在这种情况下,表达式的输入是TEntity类型的IQueryable对象。表达式将返回该IQueryable的有序版本例如,如果存储库是针对Student实体类型实例化的,则调用方法中的代码可能为orderBy参数指定q =&gt; q.OrderBy(s =&gt; s.LastName)。“
当你调用Get,你应该提供一个lambda表达式,它将是IQueryable上的一个Func或函数,提供一个IOrderedQueryable。
因此,对于您使用的文章中使用的Student对象。
var students = repository.Get(x => x.FirstName = "Bob",q => q.OrderBy(s => s.LastName));