[ad_1]
尊敬的先生,
帮助我如何转换 LINQ 日期时间格式
例子:
1,2012 年 1 月 26 日,星期二(或)
2,2012 年 1 月 26 日,星期二
给我解决方案吗?
通过莫汉
解决方案1
YearMonth = r.SomeDateTime.ToString("dddd, MMMM yyyy")
解决方案3
linq 不知道转换、“ToString()”方法,因此当您获取数据时,请使用可枚举的方法,例如
var selectQuery = from add in db.address.asEnumerable() ;
那么现在您可以使用转换或“tostring”方法。
解决方案4
(从 time.table 中的类名中选择 t.Date).ToList().Select(d => d.ToString(“yyyy-MM-dd”);
尝试一下是否有效……
解决方案5
var selectQuery=from add in db.address select add.myDate.toString("{0:dddd, MMMM d, yyyy}"); selectQuery.Distinct();
尝试这个..
问候,
尼桑特
解决方案7
有时,格式化服务器端很有用。 将具有亚秒分辨率的时间戳分组为小时或天长的组就是一个示例。
在我的用例中,我们每天获得 70 万条新记录。 所以服务器端可以快得多。 在本例中,250 万条记录被分为 4 天。
应用 AsEnumerable 有效,但需要大约 40 分钟(2500 秒)。 这是根据返回 1000/秒推断出来的。
服务器端分组大约需要 0.7 秒。 这是测量的。
我正在运行一个非常慢的遥控器,但这正是重点。 托管数据库始终通过线路返回结果,因此在数据库服务器上聚合允许数据库引擎在本地执行其构建目的。
如果可能的话,一些操作(例如 toupper() 或格式化每条记录)应在本地完成。 LinqToSQL/EF 格式化日期并不难,但生成的 SQL 相当混乱。
添加分隔符是为了人类,分组不需要。 在大多数情况下,甚至不需要 PadLeft() 方法,但它们使生成的日期时间易于词汇排序和阅读。
在此示例中,我将小时、分钟和秒设置为 00,以按天分组。
要按小时分组,请取消注释:
let Hour = Date.Hour.ToString().PadLeft(2, '0') //let Hour = "00"
这只是一个快速而肮脏的例子。 不是有史以来最快的代码。
只需在服务器端执行此操作即可在 40 秒内获得它。 不到一秒。 所以我现在已经完成了。
顺便说一句,此脚本仅在我的环境中的 LinqPad 上运行,因此请进行编辑以满足您的需求,但不要要求我解决您的特定问题。
void Main() { var query = from cat in CATOperations let Date = cat.OperationDateTime let Year = Date.Year.ToString().PadLeft(4, '0') let Month = Date.Month.ToString().PadLeft(2, '0') let Day = Date.Day.ToString().PadLeft(2, '0') //let Hour = Date.Hour.ToString().PadLeft(2, '0') let Hour = "00" //let Minute = Date.Minute.ToString().PadLeft(2, '0') let Minute = "00" //let Second = Date.Second.ToString().PadLeft(2, '0') let Second = "00" let dateGroup = Year + '/' + Month + '/' + Day + " " + Hour + ":" + Minute + ":" + Second where Date > new DateTime(2024, 1, 9) //select new{Date, dateGroup}; group 1 by dateGroup into g orderby g.Key let count = g.Count() select new { g.Key, count }; query.Dump(); }
[ad_2]
コメント