Anonyme Typen in einer Signatur
-
04-07-2019 - |
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();
}
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
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