Мне нужно объединить два списка по идентификатору, чтобы сопоставить значения с сущностью пользователя.
В этой части, я думаю, мне удалось сделать это с:
var concernedParticipantIds = baseValues.Select(x => x.ParticipantId).Distinct().ToList();
var queryParticipants =_unitOfWorkMt.GetMTReadonly<Participant>().GetQuery(tenantId).Where(x => concernedParticipantIds.Contains(x.Id));
var participantAndValues = from value in baseValues
join participant in queryParticipants on value.ParticipantId equals participant.Id
select new {Participant = participant, Value = value};
Но это приводит к одной строке на значение, например:
user_1 => value_1
user_1 => value_2
user_1 => value_3
user_2 => value_1
user_2 => value_2
user_2 => value_3
...
Есть ли способ группировки по пользователю? Я хотел бы что-то вроде:
- user_1 => value_1
value_2
value_3
- user_2 => value_1
value_2
value_3
Единственное, что я придумал, это что-то вроде
var results = from p in participantAndValues
group p.Value by p.Participant into temp
select new { Person = temp.Key, Values = temp.ToList() };
Кажется, что работает, но не уверен, что это правильный путь, и, возможно, есть способ сделать это одним запросом?