利用asc/dsc?进行柱过滤?复杂的一个.MVC4
本文关键字:复杂 一个 MVC4 过滤 asc dsc 利用 | 更新日期: 2023-09-27 18:00:10
我有一个包含数据的数据表。我想应用排序。当我点击一个表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:'系统。数据实体DbSet"不包含"OrderBy"的定义和最佳扩展方法过载’系统。林克。ParallelEnumerable。OrderBy(System.Linq.PalallelQuery,系统Func)'有一些无效的参数
2)错误2实例参数:无法从"System"转换。数据实体DbSet"到’系统。林克。ParallelQuery’
剩下的一切都很好。只是排序问题。任何想法。!
问候
在您的Func中,您说输入parameter的类型是LeadList
(可能有问题),返回类型是字符串(这是可以的)。OrderBy需要一个具有类型为Lead
(非列表)的输入参数的委托。
也许这能解决你的问题?
编辑:我建议您将您的委托编辑为这样的内容:(重要的是要指定委托的输入参数为Lead类型(而不是Lead列表或类似的内容)
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 : "");