У меня есть следующая функция:
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();
}
...
}
Здесь все хорошо.Но есть проблема, внутри конструктора 'InfrStadium' для каждой команды мне нужно получить информацию по секторам, которая уже была сгруппирована для конкретной команды.Поэтому я сделал такие изменения:
РЕДАКТИРОВАНИЕ: был добавлен подход с 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();
}
И получил следующую ошибку:
Ожидается вызов метода с запросом.Получил 'team_sectors.ToList ()'.Имя параметра: информация
Почему?Что здесь не так?
Другой подход (на самом деле, не уверен, что он вообще должен работать):
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();
}
Я собираюсь передать в конструктор объектов необходимые данные, которые не будут запрашивать БДснова.
Но в моем случае я получаю сообщение об ошибке:
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 () для типа IGrouping<int,InfrStadiumSector>
...
Пожалуйста, сообщите, любые мысли приветствуются!