Вопрос

Я пытаюсь заставить подпись к приведенному ниже методу работать.Поскольку это Анонимный тип, у меня возникли некоторые проблемы, любая помощь была бы большой.

Когда я посмотрел на sortedGameList.ToList() в окне быстрого просмотра я получаю подпись

System.Collections.Generic.List<<>f__AnonymousType0<System.DateTime,System.Linq.IGrouping<System.DateTime,DC.FootballLeague.Web.Models.Game>>>

Большое спасибо

Дональд

   public List<IGrouping<DateTime, Game>> getGamesList(int leagueID)
{
    var sortedGameList =
        from g in Games
        group g by g.Date into s
        select new { Date = s.Key, Games = s };

    return sortedGameList.ToList();

}
Это было полезно?

Решение

выберите новый { Date = s.Key, Games = s.ToList() };

Редактировать:это неправильно!Я думаю, этого хватит.

public List<IGrouping<DateTime, Game>> getGamesList(int leagueID)
{
    var sortedGameList =
        from g in Games
        group g by g.Date;

    return sortedGameList.ToList();
}

И нет, вам не нужен select!

Другие советы

Вы не должны возвращать анонимные экземпляры.

Вы не можете возвращать анонимные типы.

Создайте тип (с именем) и верните это:

public class GameGroup
{
  public DateTime TheDate {get;set;}
  public List<Game> TheGames {get;set;}
}

//

public List<GameGroup> getGamesGroups(int leagueID)
{
  List<GameGroup> sortedGameList =
    Games
    .GroupBy(game => game.Date)
    .OrderBy(g => g.Key)
    .Select(g => new GameGroup(){TheDate = g.Key, TheGames = g.ToList()})
    .ToList();

  return sortedGameList;
}

Простой ответ таков:не используйте анонимный тип.

Самое близкое, что вы получите с этим анонимным типом, - это IEnumerable<object>.Проблема в том, что любой, кто использует ваши материалы, не будет знать, что делать с этим объектом, тип которого был "непредсказуемым".

Вместо этого создайте класс, подобный:

public class GamesWithDate {
    public DateTime Date { get; set; }
    public List<Game> Games { get; set; }
}

И измените свой LINQ на:

var sortedGameList =
    from g in Games
    group g by g.Date into s
    select new GamesWithDate { Date = s.Key, Games = s };

Теперь вы возвращаете Список<GamesWithDate>.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top