.net Linq 2 Sql:无法传递IQueryable参数

.net Linq 2 Sql:无法传递IQueryable参数,.net,linq-to-sql,.net,Linq To Sql,我有以下功能: public class InfrStadium { private InfrStadium(int iTeamId) { _teamId = iTeamId; _sectors = InfrStadiumSector.GetTeamSectors(iTeamId); ... } public void Init() { use(_sectors); } ILi

我有以下功能:

public class InfrStadium
{
    private InfrStadium(int iTeamId)
    {
        _teamId = iTeamId;
        _sectors = InfrStadiumSector.GetTeamSectors(iTeamId);
        ...
    }
    public void Init()
    {
        use(_sectors);
    }
    IList<InfrStadiumSector> _sectors;
有些方法称之为:

public class InfrStadium
{
    private InfrStadium(int iTeamId, IList<InfrStadiumSector> sectors )
    {
        _teamId = iTeamId;
        _sectors = sectors;
        ...
    }

    public static IList<InfrStadium> GetBestStadium(IQueryable<InfrStadiumSector> sectors)
    {
        IQueryable<InfrStadium> stadiums = from sector in sectors
                                           group sector by sector.TeamId
                                           into team_sectors
                                           select new InfrStadium(team_sectors.Key)
                ;

        return stadiums.ToList();
    }
...
}
这里一切都很好。但有一个问题,在每个团队的“infrastadium”构造函数中,我需要获取已经为特定团队分组的扇区信息。所以我做了这样的改变:

编辑:添加了具有IList的方法

    public static IList<InfrStadium> GetBestStadium(IQueryable<InfrStadiumSector> sectors)
    {
        IQueryable<InfrStadium> stadiums = from sector in sectors
                                           group sector by sector.TeamId into team_sectors
                                           select new InfrStadium(
                                               team_sectors.Key,
                                               team_sectors.ToList()
                                               )
                ;

        return stadiums.ToList();
    }
并收到以下错误:

应为可查询的方法调用。有“托利斯特队”。参数名称:info

为什么??这里怎么了

另一种方法实际上并不确定是否有效:

    private InfrStadium(int iTeamId, IQueryable<InfrStadiumSector> sectors)
    {
        _teamId = iTeamId;
        _qSectors= sectors;
        ...
    }
    public void Init()
    {
        use(_qSectors.ToList());
    }
    IQueryable<InfrStadiumSector> _qSectors;

    public static IList<InfrStadium> GetBestStadium(IQueryable<InfrStadiumSector> sectors)
    {
        IQueryable<InfrStadium> stadiums = from sector in sectors
                                           group sector by sector.TeamId into team_sectors
                                           select new InfrStadium(
                                               team_sectors.Key,
                                               team_sectors.AsQueryable()
                                               )
                ;

        return stadiums.ToList();
    }
我的意图是将所需的数据传递到对象构造函数中,这些数据将不会再次请求DB

但就我而言,我收到了一个错误:

Expression of type 'System.Int32' cannot be used for parameter of type 'System.Collections.Generic.IEnumerable`1[InfrStadiumSector]' of method 'System.Linq.IQueryable`1[InfrStadiumSector] AsQueryable[InfrStadiumSector](System.Collections.Generic.IEnumerable`1[InfrStadiumSector])' 我完全不理解这个错误。我的源代码中的“System.Int32类型表达式”在哪里

在我的例子中,我正在调用“AsQueryable”方法进行类型I分组


请告知,任何想法都欢迎

尽管错误的实际原因仍然不清楚,但对其他类似问题的回答可以绕过当前问题

如果有人知道更好的解决方案,请提供建议