无法从 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&lt;Setting&gt;' does not contain a definition for 'StartTime' and no accessible extension method 'StartTime' accepting a first argument of type 'IQueryable&lt;Setting&gt;' could be found (are you missing a using directive or an assembly reference?) 之类的错误,我确定我在这里遗漏了一些东西,但不确定我遗漏了什么,非常感谢任何帮助

【问题讨论】:

stringstart_time = settings_data.First().StartTime; 成功了,如果您想将其发布为答案,我可以接受 【参考方案1】:

问题主要是它仍然是IQueryable&lt;Setting&gt;,您需要实际实例:

    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”

比较 EF Core Linq 查询中的 DateTime

如何在 EF Core 和 LINQ 中表达 GetDate() 和 DateAdd() 方法?

EF Core 多对多关系上的 LINQ 查询