C# Linq多电平

C# Linq多电平,c#,linq,C#,Linq,我有三个表作为父/子/孙联接 我试图获取一个Linq查询,该查询显示来自父表和孙子表集合的记录。我不想显示子表,因为这是一个只包含三个ID的jonction表 到目前为止我得到的是 var list = (from r in ctx.Roles.Include(x => x.RolesResources.Select(z => z.Resources)) select r) .ToList() 这有点管用。我对结果不满意,因为父元素(Roles中的r)包含子元素(Roles

我有三个表作为父/子/孙联接

我试图获取一个Linq查询,该查询显示来自父表和孙子表集合的记录。我不想显示子表,因为这是一个只包含三个ID的jonction表

到目前为止我得到的是

var list = (from r in ctx.Roles.Include(x => x.RolesResources.Select(z => z.Resources)) select r)
    .ToList()
这有点管用。我对结果不满意,因为父元素(Roles中的r)包含子元素(RolesResources)的集合,而每个子元素都包含一个资源条目

我实际需要的是,角色中的r需要有一个资源集合,跳过中间的表


这可能吗?如果是,我错过了什么?

是的,完全可以使用匿名对象或帮助器类。假设您在当前方法之外需要这个,我将用一个类来显示

public class RolesViewModel
{
    public Role Role { get; set; }
    public List<Resource> Resources { get; set; }
}

var list = ctx.Roles
    .Select(r => new RolesViewModel
    {
        Role = r,
        Resources = r.RolesResources.Select(rr => rr.Resources).ToList()
    })
    .ToList();
公共类角色视图模型
{
公共角色{get;set;}
公共列表资源{get;set;}
}
var list=ctx.Roles
.选择(r=>新角色视图模型
{
角色=r,
Resources=r.RolesResources.Select(rr=>rr.Resources.ToList())
})
.ToList();

好吧,请忽略不计。你知道什么时候你在向别人解释问题的同时找到了问题的答案吗?事情就是这样<代码>变量列表=(从ctx中的r。角色选择新建{r.Id,r.Name,r.IsAdmin,r.IsActive,Resources=r.RolesResources.Select(p=>p.Resources)}).ToList()如果你已经找到了你的问题的答案,考虑下一个答案,如果你认为它会对其他人有帮助。最坏的情况是,如果你认为这不会有帮助,那么把问题完全解决。谢谢你。我有一个非常相似的解决方案,在评论中贴出来,但是StAdvOpver打败了我。nts?:)尝试过反勾号,没有问题。非常感谢。@GrigoreDolghin:backticks
应该有效,但一般的答案是:你没有。如果你有答案(即使是针对你自己的问题),将其作为答案而不是评论。将答案放在评论中故意很难阻止人们这么做。@Heinzi-meanwile Camilo给出了一个更清晰的答案,所以我接受了这个答案。谢谢you@GrigoreDolghin是的,您应该尽可能避免在注释中发布代码,因为它很难阅读。另外,请注意,如果没有有效或足够好的答案,我们鼓励您发布自己的问题答案。很高兴能够提供帮助。