我正在尝试在C#MVC中启用分页。但我得到无效的整数文字'62020131100304263882789'。大长号实际上是我们创建的唯一FaxID号码 - 它是一个字符串。为什么我会收到此错误,我该如何解决?
public class GenericRepository<TEntity> where TEntity : class
{
internal FaxContext context;
internal DbSet<TEntity> dbSet;
public GenericRepository(FaxContext context)
{
this.context = context;
this.dbSet = context.Set<TEntity>();
}
public virtual IEnumerable<TEntity> GetWithRawSql(string query, params object[] parameters)
{
return dbSet.SqlQuery(query, parameters).ToList();
}
//public IPagedList<T> Search(Expression<Func<T, bool>> filters, string sorting, List<string> includeList, int currentPageNumber, int pageSize)
public virtual IEnumerable<TEntity> GetAll(int skip, int take)
{
IQueryable<TEntity> query = dbSet;
System.Diagnostics.Debug.Print(context.Faxes.First().FaxID);
return query.OrderBy(TEntity => TEntity.).Skip(skip).Take(take).ToList();
return query.OrderBy(context.Faxes.First().FaxID).Skip(skip).Take(take).ToList();
}
由于
答案 0 :(得分:1)
您正在将整数值(FaxID)传递给OrderBy
方法,该方法需要Expression<Func<TEntity, TKey>>
- 这就是您看到此错误的原因。
使用lambda表达式从实体中选择键以订购结果。它应该是这样的(假设你对TEntity有一些限制,这使得SomeProperty可供你使用 - 否则这里的排序没有意义):
return query.OrderBy(t => t.SomeProperty)
.Skip(skip)
.Take(take)
.ToList();