0

我有以下情况。一个带有连接语句的

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;
}

queryRoles在线程内运行。所以,我只需要将它作为一个对象返回。但我找不到一种方法来投射它并获得{ b.MEB_Nome, b.MEB_Id, a.MGM_Familiar }选择。我尝试了以下代码,并在返回时设置了一个实体,它工作正常,但如果我在同一个 linq 查询中有超过 1 个实体,我不知道如何将其转换回:

//this one works fine if i have just one entity set (DAL.MembroResponsavel)
var queryMembroResponsaveis = ((IEnumerable)smartThreadPool.QueueWorkItem(x => editMeb.getMembroResponsavel(currentId)).Result).Cast<DAL.MembroResponsavel>().ToList();

谢谢。

4

2 回答 2

1

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

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;

这个问题帮助我解决了这个问题

如何从使用 LINQ to SQL 的方法返回查询结果

谢谢大家。

于 2013-05-15T14:17:12.977 回答
0

我怀疑您需要枚举结果并转换为列表:

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();
于 2013-05-14T15:41:28.113 回答