我有一个包含数据的数据表。我想申请分拣。当我单击表格Header时,Header索引将到达控制器,我有我的方法,如下所示。
public ActionResult AjaxHandler(JQueryDataTableParamModel param)
{
var Lead_FullDetails = entityobj.Leads;
IEnumerable<Lead> filteredLeads;
filteredLeads = Lead_FullDetails;
var isLeadNameSortable = Convert.ToBoolean(Request["bSortable_1"]);
var isContactNameSortable = Convert.ToBoolean(Request["bSortable_2"]);
var isCompanyNameSortable = Convert.ToBoolean(Request["bSortable_3"]);
var isProductSortable = Convert.ToBoolean(Request["bSortable_4"]);
var sortColumnIndex = Convert.ToInt32(Request["iSortCol_0"]);
Func<LeadList, string> orderingFunction = (c => sortColumnIndex == 1 && isLeadNameSortable ? c.LeadName :
sortColumnIndex == 2 && isContactNameSortable ? c.ContactName :
sortColumnIndex == 3 && isCompanyNameSortable ? c.CompanyName :
sortColumnIndex == 4 && isProductSortable ? c.Product : "");
var sortDirection = Request["sSortDir_0"]; // asc or desc
if (sortDirection == "asc")
{
filteredLeads = Lead_FullDetails.OrderBy(orderingFunction); //HERE I AM FACING ISSUE its saying no orderby function present : erros mentioned below .
}
else
{
filteredLeads = Lead_FullDetails.OrderByDescending(orderingFunction);
}
var DisplayedLeads = filteredLeads.Skip(param.iDisplayStart).Take(param.iDisplayLength);
var result = from c in DisplayedLeads select new object[] { Convert.ToString(c.LeadId), c.LeadName, c.ContactName, c.CompanyName,c.Product };
我的错误:
1)错误1:'System.Data.Entity.DbSet'不包含'OrderBy'的定义和最佳扩展方法 超载 “System.Linq.ParallelEnumerable.OrderBy(System.Linq.ParallelQuery, System.Func)'有一些无效的参数
2)错误2 实例参数:无法从'System.Data.Entity.DbSet'转换为 'System.Linq.ParallelQuery'
剩下的一切都运转良好。只是排序问题现在。任何想法。!
此致
答案 0 :(得分:1)
在你的Func中,你是说输入参数是LeadList
类型(可能有问题),返回类型是字符串(这没关系)。
OrderBy需要一个具有Lead
类型(不是列表)的输入参数的委托。
也许这可以解决您的问题?
编辑: 我建议您将代理编辑为以下内容:(重要的是指定代理的输入参数类型为 Lead (不是Leads列表或类似内容)
Func<Lead, string> orderingFunction = (c => sortColumnIndex == 1 && isLeadNameSortable ? c.LeadName :
sortColumnIndex == 2 && isContactNameSortable ? c.ContactName :
sortColumnIndex == 3 && isCompanyNameSortable ? c.CompanyName :
sortColumnIndex == 4 && isProductSortable ? c.Product : "");