2014-01-15 2 views
2

Я пытаюсь написать запрос, который захватывает список стран из моих объединенных данных. Places является List<Country>.Получить ICollection из IQueryable <ICollection> LINQ Query

 var zonedCountries = (from dz in db.DeliveryZones.Include(d => d.Places) 
           where model.DeliveryZones.Contains(dz.ID) 
           select dz.Places); 

Я ожидал бы zonedCountries быть список, но вместо этого он является IQueryable<ICollection<Country>>.

Как извлечь список из этого списка?

+1

Вы ищете «Список » или «Список <Список >» или 'IQueryable <Список >' или ..? –

ответ

9

Если вы хотите получить уплощенный список стран:

var zonedCountries = (from dz in db.DeliveryZones.Include(d => d.Places) 
         where model.DeliveryZones.Contains(dz.ID) 
         from p in dz.Places 
         select p); 

Или используйте SelectMany:

var zonedCountries = db.DeliveryZones.Include(d => d.Places) 
         .Where(dz => model.DeliveryZones.Contains(dz.ID)) 
         .SelectMany(dz => dz.Places); 

BTW Я не уверен, что если вам необходимо включить места вручную в этом случае (при этом вы выбираете места вместо зон доставки). И вы, вероятно, захотите выбрать только отдельные страны - Distinct() поможет вам здесь. Кроме того, если вы хотите сохранить результаты в списке, то простую связь ToList() выполнит эту работу.

+1

Я никогда не видел из - бла - из синтаксиса раньше. Большое спасибо :) – Smithy

+1

SelectMany? что-то новое каждый день ... вы, сэр, заслуживаете вашего +1 –

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