[英]How to get Month Name from datetime column in Linq to SQL?
我的表中有一个DateTime
列。
在Linq to SQL查询中,我只需要该字段的Month部分
如何编写Linq查询?
好吧,我可以立即想到三个选项:
DateTime
,然后提取月份并将其格式化为客户端 DateTime.Month
从数据库中提取月份,然后将其格式化为客户端 就个人而言,我不会尝试第三种选择 - 我觉得它不太可能工作,至少没有多少努力。
我怀疑我实际上只是将DateTime
拉回来,并做客户端的一切 。 这样做非常容易,而且必然会起作用。 我希望DateTime.Month
可能会工作,但你不会被节省非常多的网络带宽,而且你会得到服务器做的工作,这可能只是为方便客户做的。
请注意,如果您仍希望将结果作为查询,则可以使用AsEnumerable
强制查询的其余部分在客户端完成。 例如:
var query = db.Customers
.Where(c => c.OrderCount > 500) // Or whatever query you want
.Select(c => new { c.Name, c.FirstOrder })
.AsEnumerable() // Do the rest of the query on the client
.Select(c => new { c.Name, c.Month = c.FirstOrder.ToString("MMM") });
编辑:如评论中所述,如果它实际上会影响结果 ,则在服务器端使用DateTime.Month
是有意义的,例如
var query = db.Customers.Where(c => c.FirstOrder.Month == 1)
...
...但在这些情况下,我希望它是重要的数值,而不是月份的名称 。
就像是:
string monthName = dataContext.GetTable<TableName>()
.FirstOrDefault(t => t.DateTimeColumn)
.ToString("MMM");
您需要使用ToList()
将表转换为Enumerable
类型,因为您不能在查询类型上使用ToString()
。
var result = from sales in SalesOrderHeaders.ToList()
select new {
Sales_Order_ID = sales.SalesOrderID,
Territory_ID = sales.TerritoryID,
Month = sales.OrderDate.ToString("MMMM"),
Year = sales.OrderDate.Year
};
result.Dump();
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.