Как выбрать столбец на основе критериев из таблицы INCLUDEd - PullRequest
0 голосов
/ 09 мая 2019

Я выбираю набор данных из базы данных sql table1, основываясь на Id каждой строки, выбранной в таблице 1, я включаю все строки, имеющие одинаковый идентификатор в таблице 2, для каждой из этих строк, которые я хочу выбрать только строки (из таблицы 2), где столбец say (мобильный) имеет значение 1

Это связано с сущностью, вот запрос ниже

List<Event> queryEvents;
using (var context = new Entities())
{
   queryEvents = context.Events.Where(s => s.IsActive == (byte?) RecordTypeEnum.Active)
                    .Include(s => s.EventOwner).Include(x => x.EventTickets.Any(y => y.AvailableInventory >= 1))
                    .Where(g => g.IsActive != null && g.EventOwner.IsActive == true)
                    .OrderByDescending(h => h.EventOwnerId).ThenBy(j => j.Title).ToList();
}

Сообщение об ошибке -

Выражение «Включить путь» должно ссылаться на свойство навигации, определенное для типа. Используйте пунктирные пути для ссылочных свойств навигации и оператор Select для свойств навигации коллекции. Имя параметра: путь

Я хочу выбрать все записи из таблицы1, где IsActive (столбец) == 1, и выбрать все записи из таблицы2, где идентификатор таблицы1 = идентификатор таблицы2 и где в таблице 2 имеется доступный инвентарь (столбец) == 1

Ответы [ 2 ]

0 голосов
/ 16 июля 2019

Я не смог решить вопрос в одном запросе, поэтому я использовал два запроса

queryEvents = context.Events.Where(s => s.IsActive == (byte?)RecordTypeEnum.Active)
                    .Include(s => s.EventOwner).Include(x => x.EventTickets)
                    .Where(g => g.IsActive == (byte)RecordTypeEnum.Active && g.EventOwner.IsActive == true)
                    .OrderByDescending(h => h.EventOwnerId).ThenBy(j => j.Title);

                queryEvents = queryEvents.Select(o =>
                {
                    o.EventTickets = o.EventTickets.Where(f => f.AvailableInventory > 0 && f.Amount != zero ).ToList();
                    return o;
                }).ToList();

в первом запросе я выбрал все события и включил таблицу заявок, затем во втором запросе я выбрал все события, в которых поле в объекте заявок соответствовало заданным критериям

0 голосов
/ 09 мая 2019

Условное включение не поддерживается. Но вы можете достичь своей цели с помощью кода ниже:

  queryEvents = context.Events.Where(s => s.IsActive == (byte?) RecordTypeEnum.Active)
                    .Include(s => s.EventOwner)
    .Select(e => new{
    e, 
    EventTicklets = e.EventTickets.Where(y => y.AvailableInventory >= 1 ).ToList()
})
                    .Where(g => g.e.IsActive != null && g.e.EventOwner.IsActive == true)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...