Выполнить LINQ Query, используя свойства дочернего Entity Set - PullRequest
0 голосов
/ 25 ноября 2010

Я переживаю кризис из-за того, что кажется таким простым, но все же не работает.Вот мой сценарий.

У меня есть объектная структура tEvents, которая содержит свойства события, например, серии концертов.tEvents, в свою очередь, содержит набор сущностей tEventOptions, который включает в себя такие свойства, как EventDate, Cancelled и т. д. Я хотел бы запросить список tEvents, используя свойства tEventOptions, например, фильтрацию по дате.

Моя страница используетобъект календаря для отображения дат событий.Поэтому я пытаюсь найти, совпадают ли какие-либо события tEvents в списке, возвращающиеся из базы данных, с датой дня, отображаемой в моем элементе управления Calendar, следующим образом (в этом фрагменте «данные» представляют собой List и результаты запроса db):

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;
        }
}

Таким образом, значение r должно быть истинным, если есть какие-либо события, имеющие tEventOption с любой EventDate, которая совпадает с датой DayRenderEventArgs.EventDate - это поле даты и времени, поэтому я беру только часть даты для сравнения с e.Day.Date.Я думал, что если взять 'Any ()' для запроса в tEventOptions, я получу логическое значение относительно того, соответствуют ли какие-либо элементы условию.

За исключением r, мой результат запроса var всегда верен независимо от того, к каким данным он относитсяполучает.Я пробовал подзапрос, используя другие свойства tEventOption и каждый раз получал один и тот же «истинный» результат.Я знаю, что данные не отражают этот результат, поэтому у меня явно есть проблема со структурой моего запроса, но из-за жизни я не могу найти способ ее разрешить.

Я боролся с этим типомзапроса, поэтому любая помощь будет принята с благодарностью.

1 Ответ

0 голосов
/ 25 ноября 2010

попробуйте

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