2013-05-31 21 views
0

我有下面的代码,我可以计算其为何无效参数:PaginatedList为MVC 3应用程序分页?错误:有一些无效参数

AuditDAL ad = new AuditDAL(); 
var agencies = ad.SearchAgencies("Ak001", ""); 

string col = param.sColumns.Split(',')[param.iSortCol_0]; 
string orderby = col + " " + param.sSortDir_0; 

//为的“AMS.Helper.PaginatedList.PaginatedList(System.Linq的最佳重载方法匹配。 IQueryable的,INT,INT)”有一些无效参数C:\ NexGen公司\ AMS \ DEV \来源\ AMS \ \控制器AuditController.cs

var qry = new PaginatedList<AuditAgency>(agencies, param.iDisplayStart, param.iDisplayLength); 

PaginatedList代码:

namespace AMS.Helper 
{ 
    public class PaginatedList<T> : List<T> { 

     public int PageIndex { get; private set; } 
     public int PageSize { get; private set; } 
     public int TotalCount { get; private set; } 
     public int TotalPages { get; private set; } 

     public PaginatedList(IQueryable<T> source, int pageIndex, int pageSize) { 
      PageIndex = pageIndex; 
      PageSize = pageSize; 
      TotalCount = source.Count(); 
      TotalPages = (int) Math.Ceiling(TotalCount/(double)PageSize); 

      this.AddRange(source.Skip(PageIndex * PageSize).Take(PageSize)); 
     } 

     public bool HasPreviousPage { 
      get { 
       return (PageIndex > 0); 
      } 
     } 

     public bool HasNextPage { 
      get { 
       return (PageIndex+1 < TotalPages); 
      } 
     } 
    } 
} 

搜索代码:

public IEnumerable<AuditAgency> SearchAgencies(string ori, string name) 
     { 
      List<AuditAgency> agencies = new List<AuditAgency>(); 
      using (var conn = new SqlConnection(_connectionString)) 
      { 
       var com = new SqlCommand(); 
       com.Connection = conn; 
       com.CommandType = CommandType.StoredProcedure; 
       string term = "Ori"; 

       if (!String.IsNullOrEmpty(ori)) 
       { 
        term = "Ori"; 
        com.Parameters.Add(new SqlParameter 
        { 
         ParameterName = "@ORI", 
         Value = ori 
        }); 
       } 
       if (!String.IsNullOrEmpty(name)) 
       { 
        term = "legal_name"; 
        com.Parameters.Add(new SqlParameter 
        { 
         ParameterName = "@Name", 
         Value = name 
        }); 
       } 
       com.CommandText = "Audit_Get_Agency_List"; 
       var adapt = new SqlDataAdapter(); 
       adapt.SelectCommand = com; 
       var dataset = new DataSet(); 
       adapt.Fill(dataset); 

       agencies = (from c in dataset.Tables[0].AsEnumerable() 
          select new AuditAgency() 
          { 
           Agency_ID = Convert.ToInt32(c["Agency_Id"]), 
           Agency_Name = c["Agency_Name"].ToString(), 
           Agency_Ori = c["ORI"].ToString(), 
           COPSAuditNumber = c["COPSAuditNumber"].ToString(), 
           OIGAuditNumber = c["OIGAuditNumber"].ToString() 
          }).ToList<AuditAgency>(); 

       return agencies; 
      } 

     } 

回答

0

错误应该告诉你从哪里开始。

如果你火起来的调试器,我想你会发现机构是IEnumberable,而不是一个IQueryable

由IQueryable的改变SearchAgencies的返回类型的IEnumerable

或可选择地改正,您可以将PaginatedList的类型更改为接受IEnumberables而不是IQueryables。这可能是更安全的作为IQueryable的自IEnumerable

继承(见 http://msdn.microsoft.com/en-us/library/system.linq.iqueryable.aspxDifferences between IQueryable, List, IEnumerator? 两者之间的差)