質問

機能するために、以下のメソッドで署名を取得しようとしています。これは匿名タイプであるため、いくつかの問題があります。どんな助けも素晴らしいでしょう。

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;を返します。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top