-
04-07-2019 - |
質問
機能するために、以下のメソッドで署名を取得しようとしています。これは匿名タイプであるため、いくつかの問題があります。どんな助けも素晴らしいでしょう。
QuickWatchウィンドウでsortGameList.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();
}
解決
select new {日付= s.Key、ゲーム= s.ToList()};
編集:それは間違っています!これでうまくいくと思います。
public List<IGrouping<DateTime, Game>> getGamesList(int leagueID)
{
var sortedGameList =
from g in Games
group g by g.Date;
return sortedGameList.ToList();
}
いいえ、選択する必要はありません!
他のヒント
匿名インスタンスを返すべきではありません。
匿名型を返すことはできません。
型(名前付き)を作成し、それを返します:
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 <!> lt; object <!> gt;です。問題は、あなたのものを使用する誰もが、その型が<!> quot; unpredictable <!> quot;であるオブジェクトをどうするかを知らないことです。
代わりに、次のようなクラスを作成します:
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 };
List <!> lt; GamesWithDate <!> gt;を返します。
所属していません StackOverflow