无法从 Linq 查询 EF Core 访问字段值
Posted
技术标签:
【中文标题】无法从 Linq 查询 EF Core 访问字段值【英文标题】:Cannot access the field value from the Linq query EF Core 【发布时间】:2021-12-26 08:12:59 【问题描述】:我正在尝试构建一个 .NET 核心应用程序,它使用 EF 核心和 alos 使用缓存来存储一些查询响应。我在访问 LINQ 查询响应中的字段时遇到问题。我不确定我在这里缺少什么。 SQL Server DB中有一个设置表,模型如下
public partial class Setting
public string EndTime get; set;
public string StartTime get; set;
public string OrderDay get; set;
public int SettingsId get; set;
并尝试在名为 CustomersController 的控制器中像下面这样查询它
public class CustomersController : Controller
............
IQueryable<JAXSurplusMouseApp.Models.Setting> settings_data = null;
.....................
bool isSettingExist = memoryCache.TryGetValue("SMSettings", out settings_data);
if (!isSettingExist)
string myCondition = (todayDt.DayOfWeek.ToString().Substring(0, 3)).ToUpper();
settings_data = (from s in _context.Settings
where s.OrderDay == myCondition
select s).Take(1);
var cacheEntryOptions = new MemoryCacheEntryOptions()
.SetSlidingExpiration(TimeSpan.FromHours(2));
memoryCache.Set("SMSettings", settings_data, cacheEntryOptions);
if(settings_data.Count() != 0)
stringstart_time = settings_data.StartTime;
我收到'IQueryable<Setting>' does not contain a definition for 'StartTime' and no accessible extension method 'StartTime' accepting a first argument of type 'IQueryable<Setting>' could be found (are you missing a using directive or an assembly reference?)
之类的错误,我确定我在这里遗漏了一些东西,但不确定我遗漏了什么,非常感谢任何帮助
【问题讨论】:
stringstart_time = settings_data.First().StartTime;
成功了,如果您想将其发布为答案,我可以接受
【参考方案1】:
问题主要是它仍然是IQueryable<Setting>
,您需要实际实例:
stringstart_time = settings_data.First().StartTime;
【讨论】:
以上是关于无法从 Linq 查询 EF Core 访问字段值的主要内容,如果未能解决你的问题,请参考以下文章
Linq,EF Core - 按一个字段分组并使用其他字段从其他表中获取数据列表
无法翻译 LINQ 表达式。以可翻译的形式重写查询,或切换到客户端评估 EF Core 3.1
无法将匿名类型从“System.Linq.IQueryable”转换为“System.Data.Entity.Core.Objects.ObjectQuery”