首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从SQL查询的虚拟外键中筛选数据

从SQL查询的虚拟外键中筛选数据
EN

Stack Overflow用户
提问于 2017-08-03 07:02:23
回答 3查看 289关注 0票数 0

我对Lambda/Linq比较陌生,但是我想从一个特定的日历中检索所有的事件,这些事件仍然是在未来发生的……

如果我使用:

代码语言:javascript
复制
EventCalendar eventCalendar;
eventCalendar = db.Events_Calendars.Find(id);

我可以获取所有事件并根据视图中的当前日期进行过滤,但我不认为这是最好的方法。

模型如下:

代码语言:javascript
复制
[Table("Events_Calendars")]
public class EventCalendar
{
    public int Id { get; set; }
    public string Calendar { get; set; }
    public virtual List<Event> Events { get; set; }
}

事件模型为:

代码语言:javascript
复制
public class Event
{
    public int Id { get; set; }
    public string Title { get; set; }
    public string Description { get; set; }
    public DateTime Start { get; set; }
    public DateTime End { get; set; }
    public int? Capacity { get; set; }
    .
    .
    .
}

我在这个问题上失败的尝试之一是:

代码语言:javascript
复制
eventCalendar = db.Events_Calendars.Where(x => x.Events.Any(y => y.End >= DateTime.Today));

但是它给了我“无法隐式地将类型'System.Linq.IQueryable<...Models.EventCalendar>‘转换为'...Models.EventCalendar’”

编辑:增加了申报行...EventCalendar eventCalendar;

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2017-08-03 07:21:54

您的Events_Calendars.Where返回IQueryable<Models.EventCalendar>,这意味着一些Models.EventCalendar项的“查询源”,但是Events_Calendars.Find返回一个Models.EventCalendar,因此您不能将一组Models.EventCalendar转换为Models.EventCalendar。您可以声明新的varibale eventCalendars并将筛选项存储到其中:

代码语言:javascript
复制
var eventCalendars = db.Events_Calendars.Where(x => x.Events.Any(y => y.End >= DateTime.Today)).ToList();

你也可以通过read了解IQueryableIEnumerable之间的区别

票数 1
EN

Stack Overflow用户

发布于 2017-08-03 07:07:02

在where子句旁边使用.ToList()并声明var list =或list

票数 1
EN

Stack Overflow用户

发布于 2017-08-03 07:09:34

Linq Where方法返回匹配实体的列表。您正尝试将其返回给定义为单个实体的变量。如果将eventCalendar定义为IQueryable<Models.EventCalendar>类型,而不是Models.EventCalendar类型,则Linq语句将起作用。

或者,您可以将eventCalendar定义为更健壮的List<Models.EventCalendar>,并在查询结束时使用Linq方法ToList()。即。eventCalendar = db.Events_Calendars.Where(x => x.Events.Any(y => y.End >= DateTime.Today)).ToList();

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45472316

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档