2015-04-07 6 views
0

У меня есть int Список лотовItemIds (lotItemIdList). От BookingItems Я хочу выбрать только такие BookingItems, чьи BookingItemId нет в списке lotItemIds.Поиск данных в списке с использованием linq

Я написал выражение, как показано ниже:

var Booking = context.Bookings.Include(x => x.BookingItems.Select(y => y.LotItem)) 
           .FirstOrDefault(x => x.BookingId == BookingId 
           && x.BookingItems.Any(y => !lotItemIdList.Contains(y.BookingItemId))); 

Но это выбрать все элементы, даже если таковые присутствуют в lotItemIdList.

+0

Можете ли вы предоставить структуру своих объектов? Похоже, что 'Booking' имеет несколько' BookingItems'? Кроме того, просто для подтверждения, вы пытаетесь вернуть 'BookingItems', чей' BookingItemId' отсутствует в 'lotItemIds'; или вы пытаетесь вернуть «Заказы», ​​которые имеют «BookingItems», которых нет в 'lotItemIds'? – Tim

+0

ваше понимание верное. Я пытаюсь вернуть 'Bookings', у которых есть' BookingItems', которых нет в 'lotItemIds' –

+0

Думая об этом еще немного ... вы говорите« это выбор всех элементов ... », но вы звоните 'FirstOrDefault' - поэтому он может возвращать только нуль или один. Вы имели в виду, что он возвращает все Бронирование (как свойство возвращенного бронирования), даже те, которые не совпадают? – Tim

ответ

1

ОК, так что вы хотите сам бронирование, то вы на правильном пути, хотя вы, кажется, делают вещи, которые не необходимо на основе вашего описания. Это должно работать:

var bookings = context.Bookings 
         .Where(b => b.BookingItems 
            .Any(bi => !lotItemIdList.Contains(bi => bi.BookingItemId))); 

Вы получаете все заказы, где любой один из BookingItems бронирований имеет идентификатор, который не находится в списке.

+0

Большое спасибо! Я нашел ошибку, которую я сделал :) –

0

Из вашего описания, это то, что вы хотите:

var bookingItems = context.Bookings.Where(b => !lotItemIdList.Contains(b.BookingItemId)); 
+1

Бронирование не имеет BookingItemId - это свойство BookingItem (по крайней мере, я думаю) – Tim

Смежные вопросы