【发布时间】:2012-08-30 06:49:19
【问题描述】:
基本上我有一个 ASP.NET 的 QueryExtender 控件和 首先,我需要将 sql varchar 值转换为 CSharp 类型的 TimeSpan,然后对其应用 Linq OrderBy 子句,但执行时会出错。
这是我的代码:
protected void FilterProducts(object sender, CustomExpressionEventArgs e)
{
e.Query = (from p in e.Query.Cast<accounts>()
select p).OrderBy(p=> TimeSpan.Parse(p.TimeTo));
}
错误: LINQ to Entities 无法识别方法“System.TimeSpan Parse(System.String)”方法,并且该方法无法转换为存储表达式。
【问题讨论】:
-
p.TimeTo是什么样的?你不能按字符串排序吗? -
1.您也许可以使用 SqlFunctions (msdn.microsoft.com/en-us/library/dd466176.aspx)。但是你能展示 TimeTo 的例子吗? 2.如果TimeTo表示Time值,为什么DB中是Varchar?
-
p.TimeTo 是 sql server 中的 varchar 类型,例如:1:00
-
@RaphaëlAlthaus 基本上我使用的是 sql server 2005,你知道 Time 类型在这个版本中不可用
标签: c# asp.net linq query-extender