2015-05-12 105 views
1

我是新來的C#來自VB和即時通訊試圖讓這個SQL-LINQ查詢工作。它適用於日期過濾器IEnumberale。但是我沒有收到任何錯誤消息或語法錯誤。任何人都可以告訴我我錯過了什麼嗎?我可以通過拉整個桌子然後應用過濾器來實現,但我不想這樣做,因爲有太多的記錄。我主要是按照這個教程來讓我走上正確的道路。如何做Linq到SQL dateTime過濾器

[http://www.codeproject.com/Articles/43025/A-LINQ-Tutorial-Mapping-Tables-to-Objects][1]

這是目前使用

public void getdata() { 
     Console.WriteLine("starting"); 
     var STL = new STDB.reportDB(Properties.Settings.Default.dataConnString); 

     DateTime startDate = new DateTime(01/02/2015); 
     DateTime endDate = new DateTime(01/03/2015); 
     IEnumerable<STDB.salesInvLine> lastMonthInvoiced = from salesinv in STL.Sales_Inv_Lines 
        where (salesinv.Shipment_Date.Year == startDate.Year 
         && salesinv.Shipment_Date.Month == startDate.Month) 
        select salesinv; 

     foreach (STDB.salesInvLine salesinv in lastMonthInvoiced) { 
      string code = salesinv.Document_No_; 
      DateTime ddate = salesinv.Shipment_Date; 
      Console.WriteLine(code); 
     } 
    } 

我認爲在where線的所有出問題,但我真的不sure.I've確信領域是代碼即時通訊數據庫中的DateTime字段。 我發現的其他例子有用引號定義的DateTime,但我的視覺工作室不接受字符串作爲這樣的日期時間,如DateTime("01/03/2015")

任何幫助將不勝感激。

回答

1

嘗試創建的日期是這樣的:

DateTime startDate = new DateTime(2015, 2, 1); 
DateTime endDate = new DateTime(2015, 3, 1); 

沒有你正在使用真正接受一個int(你將)和INT的構造引號意味着蜱!

編輯:有沒有構造函數的DateTime採取string as parameter

你可以試試:

var myDate = Datetime.Parse("31/01/2015") 

但是記住您當前區域爲日期時間格式可以是指基於不同的東西。

+0

謝謝你的作品,我仍然想知道爲什麼引用日期不適用於我的視覺工作室。仍然在等待我停止成爲白癡的那一天。 ;( – WouldBeNerd

+0

編輯說明引號事情 – Juan

+0

您也可以指定文化或使用ParseExact,您可以在其中指定日期字符串的格式以適合您的需要。 – Pluc

0

第一件事,我看到

DateTime startDate = new DateTime(01/02/2015); 
DateTime endDate = new DateTime(01/03/2015); 

線應該是

DateTime startDate = new DateTime(2015, 2, 1); 
DateTime endDate = new DateTime.Parse(2015, 3, 1); 

因爲,你知道,01/02/201501/03/2015產生0,因爲他們是integer divisions。我們從小學就認識他們。兩個電話號碼DateTime(Int64) constructor均爲DateTime(0),等於DateTime.MinValue

或者如果這是您的CurrentCulturestring date and time format,您可以使用;

DateTime startDate = DateTime.Parse("01/02/2015"); 
DateTime endDate = DateTime.Parse("01/03/2015"); 
+0

感謝您的快速回復,但是當我嘗試的時候,visual studio告訴我「class system.String,表示文本爲一系列Unicode字符。參數1:無法從'字符串'轉換爲'長'」 – WouldBeNerd

+0

@ WouldBeNerd對不起,解決了這個問題。 –

+0

謝謝男人:),非常感謝^^,希望我能給你們兩個答案打勾:/ – WouldBeNerd