使用Linq To Entities访问多对多时调用ToList()时编译错误

时间:2010-05-12 03:24:53

标签: c# linq entity-framework linq-to-entities

我无法弄清楚我做错了什么。我有以下方法:

    public IList<WObject> GetRelationshipMembers(int relId)
    {
        var members = from r in _container.ObjectRelationships
                      where r.Id == relId
                      select r.WObjects;

        return members.ToList<WObject>();
    }

这会返回以下错误:

Instance argument: cannot convert from 'System.Linq.IQueryable<System.Data.Objects.DataClasses.EntityCollection<Project.DomainModel.Entities.WObject>>' to 'System.Collections.Generic.IEnumerable<Project.DomainModel.Entities.WObject>'

如何将EntityCollection转换为没有延迟加载的列表?

1 个答案:

答案 0 :(得分:1)

您的查询看起来像是返回一系列实体集合 - 实体列表的列表。如果你想弄平它们。您正在尝试将其转换为实体列表。现在,你想怎么做?你想把所有的收藏品拼凑成一个大清单吗?或者从每个系列中获取第一个条目?这是一个将结果展平的例子:

public IList<WObject> GetRelationshipMembers(int relId)
{
    var members = from r in _container.ObjectRelationships
                  where r.Id == relId
                  select r.WObjects;

    return members.SelectMany(x => x)
                  .ToList<WObject>();
}