【问题标题】:Printing Month Name in Linq在 Linq 中打印月份名称
【发布时间】:2012-09-07 07:36:50
【问题描述】:

在使用 LINQPAD 时,Linq 中是否有任何内置函数可以打印月份名称?

我想在下面的场景中打印月份名称

var query = from e in Employees
           let month=e.BirthDate.GetValueOrDefault()
           let birthmonth=month.ToString("MMMM")
           select birthmonth;
           query.Dump();

当我运行它时,它会抛出 NotSupportedException。 如何在 Linq to Sql 中打印月份名称?

【问题讨论】:

  • 请更具体。月份名称是什么?在什么情况下?你的问题这么含糊,根本无法回答。
  • 不,linq 没有用于打印月份名称的内置函数。您可能正在寻找类似DateTime.Now.ToString("MMMM")...
  • 我可以使用 DateTime.Now.ToString("MMMM") 获取今天日期的月份名称。但我无法从表中检索月份名称。跨度>

标签: linq linq-to-sql


【解决方案1】:

不要使用ToString,而是尝试string.Format。比如:

var query = (from e in Employees
           let month = e.BirthDate.GetValueOrDefault()
           let birthmonth = string.Format("{0:MMMM}", month)
           select birthmonth);
query.Dump();

这似乎在我的本地测试中有效,尽管它不包含在 SQL 查询中。

【讨论】:

    【解决方案2】:

    分两步进行,一个是从数据库中获取月份,另一个是使用 Linq-To-Objects 执行格式化。

    var birthDates = Employees.Select(e => e.BirthDate).ToList();
    var query = birthDates.Select(d => d != null ? d.ToString("MMMM") : "Null");
    query.Dump();
    

    无论您使用什么 ORM,都无法将查询的字符串格式化部分转换为适用于您的数据库的 SQL。因此,分两步完成并使用ToList 进行评估可以解决这个问题。

    【讨论】:

      猜你喜欢
      • 2018-02-15
      • 1970-01-01
      • 2017-02-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多