سؤال

أحاول الحصول على التوقيع على الطريقة أدناه للعمل. نظرًا لأن هذا نوع مجهول لدي بعض المتاعب ، فإن أي مساعدة ستكون رائعة.

عندما نظرت إلى sortedgamelist.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();

}
هل كانت مفيدة؟

المحلول

حدد new {date = s.key ، games = 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;
}

الإجابة البسيطة هي: لا تستخدم نوعًا مجهولًا.

الأقرب الذي ستحصل عليه مع هذا النوع المجهول هو أمر لا يطاقu003Cobject> . المشكلة هي أن أي شخص يستخدم أغراضك لن يعرف ما يجب فعله مع هذا الكائن الذي كان نوعه "لا يمكن التنبؤ به".

بدلاً من ذلك ، اصنع فصلًا مثل:

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

الآن أنت تعود إلى القائمةu003CGamesWithDate> .

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top