2016-02-17 64 views
1

我正在爲已填充的表生成統計信息表。 EUR是源表,Stats是目標表。EF6檢查是否存在指定日期的記錄

我想在目標表中每一天有一行有源表中的記錄。

我有這段代碼

DateTime dt = date.Date; // Source Date 
        destinationRow = 

dme.Statistics.FirstOrDefault(d => d.DateString.Date == dt); // Does a row forthis day exist?

所以我通過在源表中的每一行進行迭代,並得到Date那麼我想看看如果源表有一行對於Date - 但是EF抱怨我不能在查詢中使用Date

那麼如何在不查詢表格兩次的情況下檢查具有特定Date的行的目標表。一旦獲得DateTime,將其轉換並檢查並再次更新或創建該行?

+0

看看在[TruncateTime](https://msdn.microsoft.com/en-us/library/system.data.entity .dbfunctions.truncatetime(v = vs.113).aspx#M:System.Data.Entity.DbFunctions.TruncateTime(System.Nullable {System.DateTime}))方法。 –

回答

3

可以使用TruncateTime方法是這樣的:

var result = dme.Statistics 
    .FirstOrDefault(d => 
     DbFunctions.TruncateTime(d.DateString) == dt); 
+0

「但EF抱怨我無法在查詢中使用日期。」拿出.Date部分,你的答案很好。 – SlaterCodes

+0

@ b1tsh1ft,對,我忘記刪除 –

+0

這麼久,我忘了所有關於盛開的DbFunctions! :P –