我正在构建一个游戏应用程序.在我的表单上,我有一个datagridview,我想绑定不同玩家的选择.
我有一个特定的PlayerClass,我把它放在名为Players的列表中.
public class PlayerClass
{
public int Id {get; set;}
public string Name {get; set;}
public List<bool> choices {get; set;}
}
Public List<PlayerClass> Players;
Run Code Online (Sandbox Code Playgroud)
在此列表中,我将添加玩家针对不同问题所做出的选择.
为了显示所做的选择,我想将结果组合到datagridview中,其中每个玩家都有一列,每行代表该玩家为该特定问题给出的答案.
所以我想创建一个包含新类的列表,该类包含不同玩家为一个问题提供的所有答案.
public class ChoicesViewClass
{
public bool ChoicePlayer1 { get; set; }
public bool ChoicePlayer2 { get; set; }
public bool ChoicePlayer3 { get; set; }
public bool ChoicePlayer4 { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
但是,如何使用Linq从第一个列表中填充辅助列表中的选项?
我正在尝试这样的事情:
grdChoices.DataSource = Players
.Select(s => new ChoicesViewClass{ ChoicePlayer1 = s, ChoicePlayer2 = s, ChoicePlayer3 = s, ChoicePlayer4 = s })
.ToList();
Run Code Online (Sandbox Code Playgroud)
但这s就是我被困的地方.我怎么解决这个问题?
谢谢.
那么你是试图通过索引访问玩家选择?玩家选择列表默认有4个长度吗?这将解决您的问题:
grdChoices.DataSource = Players
.Select(s => new ChoicesViewClass{ ChoicePlayer1 = s.choices[0], ChoicePlayer2 = s.choices[1], ChoicePlayer3 = s.choices[2], ChoicePlayer4 = s.choices[3] })
.ToList();
Run Code Online (Sandbox Code Playgroud)
但是我有点困惑,为什么要把它复杂化呢?为什么玩家不能拥有ChoicesViewClass的属性?像这样:
public class PlayerClass
{
public int Id {get; set;}
public string Name {get; set;}
public ChoicesViewClass choices {get; set;}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
61 次 |
| 最近记录: |