Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何回溯一个对象,该对象内部有一个linq查询,其中包含多个实体?_Linq_C#_Winforms_Entity Framework_Linq To Entities - Fatal编程技术网

如何回溯一个对象,该对象内部有一个linq查询,其中包含多个实体?

如何回溯一个对象,该对象内部有一个linq查询,其中包含多个实体?,linq,c#,winforms,entity-framework,linq-to-entities,Linq,C#,Winforms,Entity Framework,Linq To Entities,我有下面的场景。一个带有联接语句的查询: public Object getMGM(int MEB_Id) { var unitOfWork = new DAL.Implementations.Entity_Framework.UnitOfWork<dbgmEntities>(); var queryRoles = from a in unitOfWork._ctx.MembrosMGM join b in un

我有下面的场景。一个带有联接语句的查询:

public Object getMGM(int MEB_Id)
{
    var unitOfWork = new DAL.Implementations.Entity_Framework.UnitOfWork<dbgmEntities>();

    var queryRoles =  from a in unitOfWork._ctx.MembrosMGM
                          join b in unitOfWork._ctx.Membros on a.MGM_Pai equals b.MEB_Id
                          where a.MGM_Filho == MEB_Id
                          select new { b.MEB_Nome, b.MEB_Id, a.MGM_Familiar };

    return queryRoles;
}

谢谢。

我想您需要列举结果并将其转换为列表:

var queryRoles =  (from a in unitOfWork._ctx.MembrosMGM
                  join b in unitOfWork._ctx.Membros on a.MGM_Pai equals b.MEB_Id
                  where a.MGM_Filho == MEB_Id
                  select new { b.MEB_Nome, b.MEB_Id, a.MGM_Familiar }).ToList();

对于那些在返回匿名类型时遇到相同问题的人,我创建了一个类来获取其返回值:

public class MemberGetaMember
{
    public int MEB_Id {get;set;}
    public string MEB_Nome { get; set;}
    public bool? MGM_Familiar { get; set; }
}
然后我可以在返回时将其放回:

foreach (var x in queryRoles)
            list.Add(new MemberGetaMember { MEB_Id = x.MEB_Id, MEB_Nome = x.MEB_Nome, MGM_Familiar = x.MGM_Familiar });

        return list;
这个问题帮助我解决了这个问题


谢谢大家。

问题是当我回溯此查询时:/.ToList()在源代码上不起作用。请注意,匿名对象是专门设计用于仅在创建它们的范围内使用的;它们不是设计用来从创建它们的方法返回的。在几乎所有情况下,最简单、最合适的解决方案是创建一个新的命名类型,正如您在这里所做的那样。
foreach (var x in queryRoles)
            list.Add(new MemberGetaMember { MEB_Id = x.MEB_Id, MEB_Nome = x.MEB_Nome, MGM_Familiar = x.MGM_Familiar });

        return list;