вот мой запрос
var query = db.From<DataModels.Task>()
.Join<DataModels.Assignment>((task, assignment) => task.TaskID == assignment.TaskID)
.LeftJoin<DataModels.Association>((task, association) => task.TaskID == association.TaskID)
обратите внимание, что одна задача будет иметь 1 или более назначений и ноль или более ассоциаций. Таким образом, я получаю дубликат Task
(tuple item1) для каждого соответствия назначению и каждого сопоставления сопоставления. Мой Task
объект содержит свойства List и List, которые просто необходимо заполнить из результирующего набора. Есть ли простой способ объединить их?
Вот то, что у меня есть в настоящее время, которое работает, но не очень эффективно
var tasks = results.Select(x=>x.Item1)
.GroupBy(x => x.TaskID)
.Select(x => x.First())
.ToHashSet();
var assignments = results.Select(x => x.Item2).ToHashSet();
var associations = results.Select(x => x.Item3).ToHashSet();
foreach (var task in tasks)
{
task.TaskAssignments = assignments.Where(x => x.TaskID == task.TaskID).ToList();
task.TaskAssociations = associations.Where(x => x.TaskID == task.TaskID).ToList();
}