试图在 linq to sql 中获取星期几(周一、周二等)
Trying to get day of week (mon, tue etc..) in linq to sql
我正在为 gridview 使用 linqdatasource。
在 linqdatasource_selecting 上,我编写了以下查询以传递给 e.Result
Select o.localID, o.delivery_date,
dow = o.delivery_date.Value.DayOfWeek.ToString("ddd"), o.created_by
o.customer_name, o.customer.OrderNum
Order By delivery_date Descending
我遇到以下错误
Method 'System.String ToString(System.String)' has no supported
translation to SQL.
我看到有人说要投影 o.delivery_date.Value.DayOfWeek.ToString("ddd")
使用 .ToLists
获得结果后
这个问题是我会降低 gridview 的分页效率,因为 linq 将从所有页面而不是 gridiew 请求的页面获取结果。
有什么建议吗?
为什么要将字符串格式化为 "ddd"?这应该是 -
Select o.localID, o.delivery_date,
dow = o.delivery_date.Value.ToString("ddd"), o.created_by
o.customer_name, o.customer.OrderNum
Order By delivery_date Descending
我不确定您是否需要在 linq 查询中使用 ToString。如果你只是 select o.delivery_date.Value.DayOfWeek
你应该能够在设置你的网格视图时绑定到枚举名称
<asp:TemplateField HeaderText="Day of Week">
<ItemTemplate>
<%# Enum.GetName(typeof(System.DayOfWeek),Convert.ToInt32(Eval("dow"))) %>
</ItemTemplate>
</asp:TemplateField>
我明白您要做什么,但我建议您不要在查询中设置日期格式。
DayOfWeek.ToString("ddd")
属于表现层,不属于数据层。你的查询应该 return 一个完整的 DateTime
对象,这样任何使用查询的人都可以用它做他们想做的事(显示星期几,使用美国格式,英语格式......)
只有在您看来(假设这是一个 MVC 网站)您才应该按照您想要的方式设置日期格式。
关于分页,您应该使用 Skip()
和 Take()
方法。例如,如果要显示第 6 页并且每页有 20 条记录:
var result = (Select o.localID, o.delivery_date,
dow = o.delivery_date, o.created_by
o.customer_name, o.customer.OrderNum
Order By delivery_date Descending).Skip(100).Take(20)
我正在为 gridview 使用 linqdatasource。
在 linqdatasource_selecting 上,我编写了以下查询以传递给 e.Result
Select o.localID, o.delivery_date,
dow = o.delivery_date.Value.DayOfWeek.ToString("ddd"), o.created_by
o.customer_name, o.customer.OrderNum
Order By delivery_date Descending
我遇到以下错误
Method 'System.String ToString(System.String)' has no supported translation to SQL.
我看到有人说要投影 o.delivery_date.Value.DayOfWeek.ToString("ddd")
使用 .ToLists
这个问题是我会降低 gridview 的分页效率,因为 linq 将从所有页面而不是 gridiew 请求的页面获取结果。
有什么建议吗?
为什么要将字符串格式化为 "ddd"?这应该是 -
Select o.localID, o.delivery_date,
dow = o.delivery_date.Value.ToString("ddd"), o.created_by
o.customer_name, o.customer.OrderNum
Order By delivery_date Descending
我不确定您是否需要在 linq 查询中使用 ToString。如果你只是 select o.delivery_date.Value.DayOfWeek
你应该能够在设置你的网格视图时绑定到枚举名称
<asp:TemplateField HeaderText="Day of Week">
<ItemTemplate>
<%# Enum.GetName(typeof(System.DayOfWeek),Convert.ToInt32(Eval("dow"))) %>
</ItemTemplate>
</asp:TemplateField>
我明白您要做什么,但我建议您不要在查询中设置日期格式。
DayOfWeek.ToString("ddd")
属于表现层,不属于数据层。你的查询应该 return 一个完整的 DateTime
对象,这样任何使用查询的人都可以用它做他们想做的事(显示星期几,使用美国格式,英语格式......)
只有在您看来(假设这是一个 MVC 网站)您才应该按照您想要的方式设置日期格式。
关于分页,您应该使用 Skip()
和 Take()
方法。例如,如果要显示第 6 页并且每页有 20 条记录:
var result = (Select o.localID, o.delivery_date,
dow = o.delivery_date, o.created_by
o.customer_name, o.customer.OrderNum
Order By delivery_date Descending).Skip(100).Take(20)