【发布时间】:2010-09-29 07:39:04
【问题描述】:
我正在尝试使用 linq-to-sql 构建查询,为了提供排序功能,我编写了如下内容:
private Dictionary<string, Expression<Func<DataAccess.Auditing, object>>> OrderDict { get; set; }
OrderDict = new Dictionary<string,Expression<Func<Augeos.GereonWeb.DataAccess.Auditing, object>>>();
OrderDict.Add("Date", p => (DateTime)p.RequestDateTime);
OrderDict.Add("Username", p => (string)p.CdUsername);
OrderDict.Add("Portfolio", p => (string)p.CdPortfolio);
OrderDict.Add("Url", p => (string)p.RequestedUrl);
OrderDict.Add("Result", p => (bool)p.RequestResult);
OrderDict.Add("Duration", p => (float)p.RequestDuration);
private IQueryable<DataAccess.Auditing> SetOrder(string orderBy, bool orderDirection, IQueryable<DataAccess.Auditing> query)
{
if (orderDirection)
return query.OrderByDescending(OrderDict[orderBy]);
else
return query.OrderBy(OrderDict[orderBy]);
}
我的目标是使用 SortOrder 函数对查询进行排序。主要问题是 Func 返回一个对象,而 linq 无法对这种类型的元素进行排序。我确实需要使用 object 作为返回类型,因为我必须按多种类型进行排序。实际上是否可以稍微修改此代码并使其工作?
谢谢,
吉奥
【问题讨论】:
标签: c# linq-to-sql dictionary