Angular / Ionic - контроллер запускается только один раз

Код, который вы указали:

from c in company
from e in c.Employees
select e;

... будет составлять список каждого сотрудника для каждой компании в переменной company. Если сотрудник работает для двух компаний, они будут включены в список дважды.

Единственное «соединение», которое может произойти здесь, - это когда вы говорите c.Employees. В поддерживаемом SQL-провайдере это приведет к внутреннему соединению из таблицы Company в таблицу Employee.

Однако конструкция double [from часто используется для выполнения «объединения» «вручную, например:

from c in companies
from e in employees
where c.CompanyId == e.CompanyId
select e;

Это будет иметь такой же эффект, как и код, который вы опубликовали, с потенциальными незначительными различиями в зависимости от того, что содержит переменная employees. Это также было бы эквивалентно следующему join:

from c in companies
join e in employees
   on c.CompanyId equals e.CompanyId
select e;

Если вы хотите декартово произведение, однако, вы можете просто удалить предложение where. (Чтобы все было что-то стоит, вы, вероятно, тоже захотите немного изменить select.)

from c in companies
from e in employees
select new {c, e};

Этот последний запрос предоставит вам все возможные комбинации компании и сотрудника.

10
задан Luke Snowden 26 March 2015 в 08:15
поделиться