Asp.net LINQ to SQL-将日期和时间列合并为一个值

Asp.net LINQ to SQL-将日期和时间列合并为一个值,asp.net,linq-to-sql,.net-4.6.1,Asp.net,Linq To Sql,.net 4.6.1,我正在尝试将此SQL语句转换为LINQ: 从sometable中选择sessionid、userid、CAST(sessiondate作为DATETIME)+CAST(sessiontime作为DATETIME)作为sessiondatetime 其中,sessiondate为日期类型,sessiontime为时间类型 我尝试了以下方法: var query=来自表中的会话 选择新的 { 会话Id, session.UserId, DateTime=会话。日期+会话。时间 }; 其中,tab

我正在尝试将此SQL语句转换为LINQ:

从sometable中选择sessionid、userid、CAST(sessiondate作为DATETIME)+CAST(sessiontime作为DATETIME)作为sessiondatetime
其中,
sessiondate
为日期类型,
sessiontime
为时间类型

我尝试了以下方法:

var query=来自表中的会话
选择新的
{
会话Id,
session.UserId,
DateTime=会话。日期+会话。时间
};
其中,
table
是对
DataContext
实例的
GetTable()调用的返回值,
Session
类将
sessionid
映射到
Id
userid
sessiondate
映射到
DateTime),和
sessiontime
Time
(TimeSpan)

LINQ被转换为这条相当长的SQL语句:

选择[t0].[sessionid]作为[Id],[t0].[userid]作为[userid],转换(DateTime,DATEADD(小时,DATEPART(小时,[t0].[sessiontime]),转换(DateTime,DATEADD(分钟,DATEPART(分钟,[t0].[sessiontime]),转换(DateTime,DATEADD(秒,[t0].[sessiontime]),转换(DateTime,DateTime,DATEPART(毫秒,[t0])。[sessiontime],[t0]。[sessiondate]()()()()()())()())作为[
不幸的是,当试图执行该语句时,它告诉我“数据类型date的date函数dateadd不支持datepart毫秒。”我猜它对使用毫秒进行的
dateadd
调用不满意。有办法解决这个问题吗


编辑:请注意,
session.Date
session.Time
都可以为空。

不幸的是,数据结构不正确导致代码很难看:

var query = from session in table
select new
{
    session.id,
    session.userid,
    combinedDate = new DateTime(
        session.Date.Year, session.Date.Month, session.Date.Day, 
        session.Time.Hour, session.Time.Minute, session.Time.Second, 
        session.Time.Millisecond)
};

您是在尝试对
sesstiondate
sessiontime
列值求和,还是只是尝试将它们格式化以一起显示?我正在尝试求和并在稍后使用它们进行比较。我完全忘了提到我使用的是可为空的值,所以我一直在使用
session.Date.Value
session.Time.Value
,which不能正确地使用这个答案。但是,强制转换为不可为空的类型而不是使用
.Value
,效果非常好!这远不是有史以来最漂亮的东西,但它确实有效。