Я пытаюсь написать выражение LINQ, которое объединит две таблицы и вернет данные в формате, аналогичном тому, который возможен при использовании GROUP_CONCAT в MySql. Я пытался искать в Google и SO, но все результаты, которые я нашел, использовали MSSQL или использовали только одну таблицу. Выражение, которое я написал, теперь выглядит так:
from d in division
join o in office on d.Id = o.DivisionId
select new
{
id = d.Id,
cell = new string[] { d.DivisionName, o.OfficeName }
}
Как и ожидалось, возвращается список каждого подразделения и какие офисы соответствуют этому подразделению. Единственная проблема состоит в том, что, поскольку у большинства отделений будет больше чем один офис, я получаю подразделение назад для каждого офиса в этом отделении. По сути, я вижу такие результаты:
Division1: Office1
Division1: Office2
Division1: Office3
Division2: Office1
Когда я хочу увидеть:
Division1: Office1, Office2, Office3
Division2: Office1
Я помню, что делал что-то некоторое время назад с MySql, который использовал GROUP_CONCAT, но я не могу понять, что эквивалент этого будет с использованием LINQ. Я попытался написать метод, который имел параметр IEnumerable<Office>
и построил строку, используя метод расширения Aggregate
, но так, как я сейчас пишу свое выражение LINQ, каждый Office передается вместо IEnumerable<Office>
. Есть ли лучший способ подойти к этой проблеме, чем то, что я делаю сейчас? Я довольно плохо знаком с выражениями LINQ, поэтому прошу прощения, если это тривиально.