我正努力让语法更正确。
我试图通过date
获取一个明确的optionNames列表,而不是日期时间。以下LINQ查询仅按日期时间获取不同的列表
var optionList = await db.OptionsStore.Select(x => new { x.OptionTime, x.OptionName })
.Distinct().ToListAsync();
x.OptionTime
是DateTime类型。我知道如何仅在where子句中使用日期部分而不是select子句。将x.OptionTime更改为x.OptionTime.Date会出现此错误:
System.NotSupportedException:'指定的类型成员'日期'不是 LINQ to Entities支持。只有初始化者,实体成员和 支持实体导航属性
是否可以在查询中将日期时间转换为日期,或者我之后是否需要处理它?</ p>
答案 0 :(得分:2)
使用EntityFunctions.TruncateTime()
(DateTime.Date
无法转换为SQL):
var optionList = await db.OptionsStore
.Select(x => new
{
OptionTime = EntityFunctions.TruncateTime(x.OptionTime),
OptionName = x.OptionName
})
.Distinct()
.ToListAsync();
答案 1 :(得分:1)
您应该尝试使用System.Data.Entity.DbFunctions TruncateTime函数。