Frage

Ich versuche, die Unterschrift auf der Methode unten, um Arbeit zu bekommen. Da dies einen anonymen Typ ist ich einige Probleme haben, würde jede mögliche Hilfe groß sein.

Wenn ich sortedGameList.ToList sah () in einem Fenster Schnellüberwachung erhalte ich die Signatur

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

Vielen Dank

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

}
War es hilfreich?

Lösung

wählen neue {Date = s.Key, Spiele = s.ToList ()};

Edit: das ist falsch! Ich denke, das tun wird.

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

    return sortedGameList.ToList();
}

Und nein, Sie brauchen nicht auf die wählen!

Andere Tipps

Sie sollten keine anonymen Instanzen zurück.

Sie können nicht anonyme Typen zurück.

Erstellen Sie eine Art (benannt) und zurück, dass:

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

Die einfache Antwort lautet: keine anonymen Typ verwenden

.

Der nächste gehst du mit diesem anonymen Typ erhalten, ist IEnumerable . Das Problem ist, alle, die Ihr Material verwendet wird nicht wissen, was mit dem Objekt, dessen Typ zu tun war „unberechenbar“.

Stattdessen macht eine Klasse wie:

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

Und ändern Sie Ihre LINQ to:

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

Jetzt sind Sie Rückkehr List .

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top