【问题标题】:Format DateTime in an EF query在 EF 查询中格式化 DateTime
【发布时间】:2010-07-21 13:38:39
【问题描述】:

我有一个保存接收文件信息的数据库表。其中一列是 DateTime,它指定接收文件的时间。对于收到的文件,我需要获得一份带有年份(MM/YYYY)的不同月份列表。我需要把它从这张桌子上拿下来。该表中可能有数千条记录,所以我在 Oracle 中的做法是在我的选择语句中将日期时间格式化为 MM/YYYY,并在其上使用不同的子句进行排序 desc。这给了我收到文件的月份的列表。非常快速和高效。

现在我需要使用 EFv4 执行此操作....这是我在 Oracle 中使用的查询。任何人都知道我如何使用 EF 的一种查询方式来翻译它?

select distinct
    to_char( i.date_received, 'MMYYYY')) MonthAndYear
    from table1
    order by MonthAndYear desc

【问题讨论】:

    标签: c# .net frameworks entity


    【解决方案1】:

    好吧,不要像 Oracle 那样做。像 LINQ 一样做。

    var q = (from i in Context.Table1
             select new
             {
                 Month = i.date_received.Month,
                 Year = i.date_received.Year
             }).Distinct();
    

    要获得DateTime

    var r = q.AsEnumerable().Select(d => new DateTime(d.Year, d.Month, 1));
    

    【讨论】:

    • 你知道......我离得到这个只有一条线。您的解决方案为我提供了正确的列表,但是有没有办法获取 DateTime 对象的列表而不是两个单独的变量?也许我会遍历列表并从月份和年份变量创建我的 DateTime 对象......
    • 如何在没有一天的情况下创建DateTime
    • 我不关心这一天,所以它会设置为 1。我想我的目标是传回 DateTime 对象的集合而不是两个整数。
    • DateTime(int, int, int)需要进入L2O;查看更新
    猜你喜欢
    • 2014-03-08
    • 2014-09-30
    • 1970-01-01
    • 2017-06-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多