将 SQL 查询替换为 LINQ 查询
Replace the SQL query with the LINQ query
我有一个 SQL
查询,它检查今天要对照 table 中存储 3 个字母字符的字段进行检查,如下所示
如果今天是星期二我需要return记录。我有 SQL 查询
SELECT TOP 1 [EndTime],[StartTime],[OrderDay]
FROM[dbo].[Settings]
where SUBSTRING(DATENAME(weekday, getdate() AT TIME ZONE 'UTC' AT TIME ZONE 'Eastern Standard Time'), 0, 4) = OrderDay
由于 table 在 Azure SQL 中,而我的应用程序 运行 在东部时区,所以我正在做 SUBSTRING(DATENAME(weekday, getdate() AT TIME ZONE 'UTC' AT TIME ZONE 'Eastern Standard Time'), 0, 4)
现在我正在使用 EF 核心所以我想将上面的查询更改为如下所示的 LINQ 查询
settings_data = from s in _context.Settings
where SUBSTRING(DATENAME(weekday, getdate() AT TIME ZONE 'UTC' AT TIME ZONE 'Eastern Standard Time'), 0, 4) = s.OrderDay
select s;
它说 SUBSTRING()
在当前上下文中不存在。非常感谢任何帮助
您不能在 LinQ 中执行此操作,因为您不能在 select 或 where.
中使用集成函数
您必须执行以下操作:
string myCondition = DateTime.UtcNow.DayOfWeek.ToString().Substring(0,3);
settings_data = from s in _context.Settings
where s.OrderDay = myCondition
select s;
您可以使用 DateTime.Now 或 DateTime.UtcNow 进行 UTC 实时。 DayOfWeek
将为您提供当天的名称,然后对于 Substring
:0 是开始,3 是长度。
更新:
要获得 Eastern Standard Time
,您可以使用:
var timeUtc = DateTime.UtcNow;
TimeZoneInfo easternZone = TimeZoneInfo.FindSystemTimeZoneById("Eastern Standard Time");
DateTime easternTime = TimeZoneInfo.ConvertTimeFromUtc(timeUtc, easternZone);
然后:
string myCondition = easternTime.DayOfWeek.ToString().Substring(0,3);
我有一个 SQL
查询,它检查今天要对照 table 中存储 3 个字母字符的字段进行检查,如下所示
如果今天是星期二我需要return记录。我有 SQL 查询
SELECT TOP 1 [EndTime],[StartTime],[OrderDay]
FROM[dbo].[Settings]
where SUBSTRING(DATENAME(weekday, getdate() AT TIME ZONE 'UTC' AT TIME ZONE 'Eastern Standard Time'), 0, 4) = OrderDay
由于 table 在 Azure SQL 中,而我的应用程序 运行 在东部时区,所以我正在做 SUBSTRING(DATENAME(weekday, getdate() AT TIME ZONE 'UTC' AT TIME ZONE 'Eastern Standard Time'), 0, 4)
现在我正在使用 EF 核心所以我想将上面的查询更改为如下所示的 LINQ 查询
settings_data = from s in _context.Settings
where SUBSTRING(DATENAME(weekday, getdate() AT TIME ZONE 'UTC' AT TIME ZONE 'Eastern Standard Time'), 0, 4) = s.OrderDay
select s;
它说 SUBSTRING()
在当前上下文中不存在。非常感谢任何帮助
您不能在 LinQ 中执行此操作,因为您不能在 select 或 where.
中使用集成函数您必须执行以下操作:
string myCondition = DateTime.UtcNow.DayOfWeek.ToString().Substring(0,3);
settings_data = from s in _context.Settings
where s.OrderDay = myCondition
select s;
您可以使用 DateTime.Now 或 DateTime.UtcNow 进行 UTC 实时。 DayOfWeek
将为您提供当天的名称,然后对于 Substring
:0 是开始,3 是长度。
更新:
要获得 Eastern Standard Time
,您可以使用:
var timeUtc = DateTime.UtcNow;
TimeZoneInfo easternZone = TimeZoneInfo.FindSystemTimeZoneById("Eastern Standard Time");
DateTime easternTime = TimeZoneInfo.ConvertTimeFromUtc(timeUtc, easternZone);
然后:
string myCondition = easternTime.DayOfWeek.ToString().Substring(0,3);