在Linq打印月份名称

时间:2012-09-07 07:36:50

标签: linq linq-to-sql

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

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

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

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

2 个答案:

答案 0 :(得分:0)

分两步完成,一个是从数据库中获取月份,另一个是使用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进行评估可以克服这个问题。

答案 1 :(得分:0)

尝试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查询中。