【发布时间】:2018-03-12 20:53:25
【问题描述】:
我正在制作一个团队可以“选拔”球员的程序。与其让球队选择最好的球员,我希望球队选择最好的球员(总体而言),在球队拥有最少球员的位置上踢球。
播放器类:
public enum Position { PG,SG,SF,PF,C};
public string Name { get; private set; }
public Position Position { get; private set; }
public int Id { get;}
public int TeamId { get;}
public int Overall { get; private set; }
public int InsideScoring { get; private set; }
public int MidScoring { get; private set; }
public int ThreeScoring { get; private set; }
public int Passing { get; private set; }
public int BallHandling { get; private set; }
public int PerimeterD { get; private set; }
public int InsideD { get; private set; }
public int Rebounding { get; private set; }
public int Steals { get; private set; }
public int Blocks { get; private set; }
public int Strength { get; private set; }
团队类
public int Id { get; set; }
public string Hometown { get; set; }
public string Teamname { get; set; }
public Color Teamcolor { get; set; }
public List<Player> teamPlayers { get; set; } = new List<Player>();
在我的 Draft 课程中,我有以下“相关”代码。
void getPlayers()
{
allPlayers = new List<Player>();
allPlayers = sql.Select("Select * from player");
var source = new BindingSource();
source.DataSource = allPlayers;
dgAllPlayers.DataSource = source;
dgAllPlayers.AutoGenerateColumns = true;
}
Team nextTeam;
List<Player> allPlayers;
void nextUP()
{
if (nextTeam.UserControlled == 0)
{
Player ChosenPlayer = aiChoose(nextTeam);
nextTeam.teamPlayers.Add(ChosenPlayer);
allPlayers.Remove(ChosenPlayer);
dgAllPlayers.DataSource = null;
dgAllPlayers.DataSource = allPlayers;
}
nextUP();
}
private Player aiChoose(Team team)
{
//get best player available
Player ChosenPlayer = allPlayers.MaxBy(x => x.Overall);
return ChosenPlayer;
}
所以在 aiChoose 方法中我的 Linq Query 应该被替换。我很清楚这也可以通过使用 forloops 来实现,但我认为使用 Linq 会更好,对吧?
【问题讨论】:
-
是
allPlayers.OrderByDescending(p => p.Overall).FirstOrDefault()MaxBy 的意思吗? -
你试过
allPlayers.OrderByDescending(x => x.Overall).FirstOrDefault();吗? -
@vc74 是的,我在我的项目中使用 moreLinq
-
我不清楚问题是什么。