Question

J'essaie d'obtenir la signature de la méthode ci-dessous pour qu'elle fonctionne. Comme il s’agit d’un type anonyme, j’ai quelques problèmes, toute aide serait formidable.

Lorsque j'ai regardé sortGameList.ToList () dans une fenêtre QuickWatch, j'ai obtenu la signature

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

Merci beaucoup

Donald

   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();

}
Était-ce utile?

La solution

sélectionnez new {Date = s.Key, Games = s.ToList ()};

Edit: c'est faux! Je pense que cela ira.

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

    return sortedGameList.ToList();
}

Et non, vous n'avez pas besoin de la sélection!

Autres conseils

Vous ne devriez pas renvoyer d'instances anonymes.

Vous ne pouvez pas renvoyer de types anonymes.

Créez un type (nommé) et renvoyez-le:

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;
}

La réponse simple est: n'utilisez pas de type anonyme.

Le type le plus proche que vous allez utiliser avec ce type anonyme est IEnumerable < object > ;. Le problème est que quiconque utilise vos données ne saura pas quoi faire avec cet objet dont le type était & "Imprévisible &";.

Au lieu de cela, créez une classe telle que:

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

Et changez votre LINQ en:

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

Vous retournez maintenant la liste < GamesWithDate >.

.
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top