我的通用存储库中有以下方法,可以按字段名称排序。我需要知道如何才能通过多个字段订购它。
public IList<TEntity> FindByExpressionOrdered(Expression<Func<TEntity, bool>> filter,
params Expression<Func<TEntity, object>>[] orderBy)
{
IOrderedQueryable<TEntity> query = SessionScope.Current.Set<TEntity>().Where(filter).OrderBy(orderBy.First());
if (orderBy.Length > 1)
{
for (int i = 1; i < orderBy.Length; i++)
{
query = query.ThenBy(orderBy[i]);
}
}
return query.ToList();
}
如下调用上述代码会导致“无法将类型 'System.Int64' 转换为类型 'System.Object'。LINQ to Entities 仅支持转换实体数据模型原始类型。” 例外。
IList<Product> prods = IoC.Resolve<IRepository<Product>>().FindByExpressionOrdered(p => p.IsActive && p.IsFavorite, p => p.Name, p => p.Id);