.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分组
请告知,任何想法都欢迎 尽管错误的实际原因仍然不清楚,但对其他类似问题的回答可以绕过当前问题 如果有人知道更好的解决方案,请提供建议