使用子实体集的属性执行LINQ查询

时间:2010-11-25 11:57:44

标签: asp.net linq parent-child

我正在崩溃,看起来很简单但却无法正常工作。这是我的情景。

我有一个tEvents的对象结构,它包含一系列音乐会等事件的属性。 tEvents又包含一个tEventOptions实体集,其中包括EventDate,Canceled等属性。我想使用tEventOptions的属性查询tEvents列表,例如按日期过滤。

我的网页使用日历对象来显示活动日期。所以我试图找到列表中返回的任何tEvent是否与我在Calendar控件中呈现的day元素的日期相匹配(在此剪辑'data'中是List并且是db查询的结果):< / p>

protected void CalendarDayRender(object sender, DayRenderEventArgs e){
    //need to see if we can find a way to find an event option that might be contained within the events datasource
    var r =( from x in data where x.tEventOptions.Select(y=>y.EventDate.Date.Equals(e.Day.Date)).Any() select x).Any();
    if (r)
    {
        e.Cell.Font.Bold = true;
        }
}

如果有任何tEvent具有任何与DayRenderEventArgs Date匹配的EventDate的tEventOption,则r应该为true。 'EventDate'是一个日期时间字段,因此我只将其中的日期部分与'e.Day.Date'进行比较。我的想法是在tEventOptions上使用'Any()'查询给出了一个关于是否有任何元素符合条件的布尔值。

除了r之外,无论接收到什么数据,我的查询结果var始终为true。我已经使用tEventOption的其他属性尝试了子查询,并且每次都获得相同的“true”结果。我知道数据不能反映这个结果,所以我的查询结构显然有问题,但对于我的生活,我找不到解决问题的方法。

之前我一直在努力解决这类问题,所以非常感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

试试这个

e.Cell.Font.Bold = data
                      .Where(x => x.tEventOptions
                          .Any(o => o.EventDate.Date == e.Day.Date));