أنواع مجهولة في توقيع
-
04-07-2019 - |
سؤال
أحاول الحصول على التوقيع على الطريقة أدناه للعمل. نظرًا لأن هذا نوع مجهول لدي بعض المتاعب ، فإن أي مساعدة ستكون رائعة.
عندما نظرت إلى 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> .