Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/322.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Linq到Sql-日期时间格式-YYYY-MMM(2009年3月)_C#_Sql Server_Linq - Fatal编程技术网

C# Linq到Sql-日期时间格式-YYYY-MMM(2009年3月)

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

我想编写一个LINQtoSQL查询,它根据用户名和日期时间进行计数和分组。我希望日期时间的格式如下“YYYY-MMM”(即2009年3月)

我原以为这会奏效,但LINQtoSQL无法解析ToString“format”参数

            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);