Linq , orderBy , and include



我与这三个实体有一对多的关系:

class Tournamnet{
int Id 
string Name 
ICollection Games<Game>
},
class Game{
int Id 
int TournamentId
ICollection PlayerGames<PlayerGame>
}
class PlayerGame{
int Id
int GameId
int PlayerId
bool IsWinner
}

我想以 JSON 格式获取有关锦标赛的所有数据,

public Tournament GetById(int id)
{
var tournament = tournamentTable
.Include(tournament => tournament.Game)
.ThenInclude(game => game.PlayerGame)
.FirstOrDefault(x => x.Id == id);

return tournament;
}

这是我的查询,这里的每个锦标赛都有一个游戏集合,每个游戏都有两个玩家游戏,一个是赢家=真,另一个是赢家=假,我需要让玩家游戏按GameID排序,我该如何解决这个问题......?

我需要按GameId订购PlayerGames,我该如何解决这个问题...?

首先确保玩家游戏是可以排序的集合类型。

例如

IList<PlayerGame> PlayerGames {get;set;} = new List<PlayerGame>()

然后只需在从数据库中获取后对其进行排序即可。

t.PlayerGames = t.PlayerGames.OrderBy(g => g.GameId).ToList();

或者,您可以创建一个自定义 ICollection 实现,该实现始终按 T 的属性之一排序,但没有一个内置的,这似乎工作量太大。

最新更新