2010-07-21 43 views
2

我有一個保存接收文件信息的數據庫表。其中一列是指定文件何時被接收的DateTime。我需要爲收到的文件獲得一個明確的月份(MM/YYYY)。我需要把它從這張桌子裏拿出來。在這個表中可能有成千上萬的記錄,所以我在Oracle中做的方式是在我的select語句中,我將datetime格式化爲MM/YYYY,並對其進行排序並使用不同的子句。這給了我一個收到文件的月份列表。非常快速和高效。在EF查詢中格式化日期時間

現在我需要使用EFv4執行此操作....以下是我在Oracle中使用的查詢。任何人都知道如何使用EF的查詢方式翻譯它?

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

回答

2

嘛,不這樣做,像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)); 
+0

你知道...我是一個從線得到這個路程。你的解決方案讓我得到正確的列表,但有沒有辦法獲得DateTime對象列表而不是兩個單獨的變量?也許我只是循環訪問列表,並從月和年變量中創建我的DateTime對象... – 2010-07-21 13:59:31

+0

如何在沒有一天的情況下創建'DateTime'? – 2010-07-21 14:24:58

+0

我不在乎這一天,所以它將被設置爲1.我想我的目標是傳回一組DateTime對象而不是兩個整數。 – 2010-07-21 14:34:04