在实体框架6中的where子句中添加日期和时间列

问题描述 投票:0回答:1

我有一个SQL Server 2016事件表,其中事件日期和开始时间存储在单独的列中。我试图编写一个查询来识别表中是否已存在DateTime的提供列表中的哪个,因此我需要在进行如下比较之前添加或组合EventDateStartTime列:

public List<DateTime> DoEventsExist(List<DateTime> dateBatch)
{
    try
    {
        DBContext.Events.Where(ce => dateBatch.Contains(ce.EventDate + ce.StartTime));
    }
    catch (Exception ex)
    {
    }
}

我相信这会给我以下错误

无法将加法表达式转换为SQL。

在这种情况下,列分别为DateTime类型(因此.NET类型为DateTimeTimeSpan),但是我也想知道如果它们都是DateTime2类型。我现在唯一想到的解决方案是使用TVP转换为存储过程。

c# sql-server linq entity-framework-6
1个回答
0
投票

给定了一个日期时间值列表,这种查询风格确实无法将您带到想要的位置。

根据您的建议,将其更改为TVP。

您也可以按照建议将TVP传递给过程,但是TVP也可以作为参数传递给adhoc SQL查询。

© www.soinside.com 2019 - 2024. All rights reserved.