2016-02-17 14 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 –