J’ai une table des Employee
et une table de Office
. Celles-ci sont jointes dans une relation plusieurs à plusieurs via la table EmployeeOffices
.
J’aimerais obtenir une liste de tous les bureaux CurrentEmployee
un employé particulier ( CurrentEmployee
) est associé.
Je pensais pouvoir faire quelque chose comme ça:
foreach (var office in CurrentEmployee.EmployeeOffices.SelectMany(eo => eo.Office)) ;
Mais cela me donne l’erreur:
Les arguments de type de la méthode ‘System.Linq.Enumerable.SelectMany (System.Collections.Generic.IEnumerable, System.Func>)’ ne peuvent pas être déduits de l’utilisation. Essayez de spécifier explicitement les arguments de type.
Je comprends que je pourrais append des arguments de type. Mais Intellisense reconnaît que eo.Office
est de type Office. Alors pourquoi cela n’est-il pas clair pour le compilateur?
Le type renvoyé par le délégué que vous transmettez à SelectMany
doit être un IEnumerable
, mais il est évident IEnumerable
pas cette interface. Il semble que vous ayez simplement confondu SelectMany
avec la méthode Select
simple.
SelectMany
sert à aplatir plusieurs ensembles dans un nouvel ensemble. Select
est destiné à la correspondance individuelle de chaque élément d’un ensemble source avec un nouvel ensemble. Je pense que c’est ce que tu veux:
foreach (var office in CurrentEmployee.EmployeeOffices.Select(eo => eo.Office))