首页 > 解决方案 > 合并来自 SelectMulti 元组的结果

问题描述

这是我的查询

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因此,对于每个分配匹配和每个关联匹配,我实际上都得到了重复(元组 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();
}

标签: c#tuplesormlite-servicestack

解决方案


推荐阅读