C# Linq到Sql-日期时间格式-YYYY-MMM(2009年3月)
我想编写一个LINQtoSQL查询,它根据用户名和日期时间进行计数和分组。我希望日期时间的格式如下“YYYY-MMM”(即2009年3月) 我原以为这会奏效,但LINQtoSQL无法解析ToString“format”参数C# Linq到Sql-日期时间格式-YYYY-MMM(2009年3月),c#,sql-server,linq,C#,Sql Server,Linq,我想编写一个LINQtoSQL查询,它根据用户名和日期时间进行计数和分组。我希望日期时间的格式如下“YYYY-MMM”(即2009年3月) 我原以为这会奏效,但LINQtoSQL无法解析ToString“format”参数 dc.MyTable .GroupBy(r => new { Name = r.UserName, YearMonth
dc.MyTable
.GroupBy(r => new
{
Name = r.UserName,
YearMonth = r.SomeDateTime.ToString("yyyy-MMM")
})
.Select(r => new
{
Name = r.UserName,
YearMonth = r.YearMonth,
Count = r.Count()
})
.OrderBy(r => r.YearMonth)
.ThenBy(r => r.Name);
有人有什么想法/建议吗
谢谢。我会避免在数据库中将任何内容转换为字符串。按
r.SomeDateTime.Year
和r.SomeDateTime.Month
分组,先按年然后按月排序,然后按名称,分别选择年份和月份(连同计数),然后如果需要在客户端代码中以字符串格式进行投影
顺便说一句,我想你的第二个
订购者应该是然后是-目前名称实际上是你订购的最重要的东西。我想知道你是否不应该这样做,因为“漫长”的路
如果需要将格式设置为字符串,请稍后在UI中执行此操作。通过重构DateTime
等,或者使用CultureInfo.CurrentCulture.DateTimeFormat.GetMonthName(…)
不是我想要的答案,但我认为可能是最正确的。感谢您提供有关使用DateTimeFormat.GetMonthName(…)的提示。好吧,您今天对我来说是+71-我怀疑您会活下来-pBy顺便说一句——如果您愿意,您可以使用查询语法而不是fluent/扩展方法来编写。但是,如果您对当前代码满意,请保持“原样”……实际上,我更喜欢extension/lambda语法而不是查询语法。只是个人喜好。
dc.MyTable
.GroupBy(r => new
{
Name = r.UserName,
Year = r.SomeDateTime.Year,
Month = r.SomeDateTime.Month
})
.Select(r => new
{
Name = r.UserName,
Year = r.Year,
Month = r.Month,
Count = r.Count()
})
.OrderBy(r => r.Year)
.ThenBy(r => r.Month)
.ThenBy(r => r.Name);