我需要获得一个玩家列表和所有与该玩家相关联的团队并将其添加到我的ViewModel。
视图模型
var distance = $('#menu').offset().top;
$(window).scroll(function () {
if ($(window).scrollTop() >= distance) {
$('#menu').addClass("navbar-fixed-top");
} else {
$('#menu').removeClass("navbar-fixed-top");
}
});
我有几个不同的数据表:
Remove maxlength="{{maxlength}}" of INPUT tag in $templateCache.put(TEMPLATE_URL,..... (angucomplete-alt.js)
public class PlayersViewModel { public long PlayerID { get; set; } public string PlayerName { get; set; } public List<long> TeamID { get; set; } //Players can be assigned to 1 or more teams }
因此,对于上面的示例表,Player 1 - John Doe应该在ViewModel中有一个包含2个teamID的数组+------------+---------+
| PlayerID | TeamID |
+------------+---------+
| 1 | 10001 |
| 1 | 10002 |
| 2 | 10002 |
| 3 | 10001 |
+------------+---------+
目标
我正在尝试拥有一个TeamIDs集合+------------+---------+-----------+
| PlayerID | ForeName| Surname |
+------------+---------+-----------+
| 1 | John | Doe |
| 2 | Pete | Noe |
| 3 | Evan | Soe |
+------------+---------+-----------+
。
代码
[10001, 10002].
我收到了List<PlayersViewModel>
个玩家ID,显然我的TeamID没有填充。
有任何建议/解决方案吗?
答案 0 :(得分:1)
尝试这样的事情:
var viewModels = playerDetail.Select(p => new PlayersViewModel()
{
PlayerID = p.PlayerID,
PlayerName = String.Format("{0} {1}", p.ForeName, p.Surname),
TeamID = pid.Where(pidElement => pidElement.PlayerID == p.PlayerID)
.Select(pidElement => pidElement.TeamID).ToList()
}).ToList();
总的来说,在我看来,你正试图从错误的一端解决问题。你首先需要一个玩家列表,然后是他们的团队第二个,而不是第一个玩家团队关联列表,第二个是玩家详细信息,所以你应该从playerDetail
对象开始(我假设它是{{1}所有IEnumerable
个对象)。
旁注:请注意,您可以在Player
类中添加一个getter,它将为您提供全名,而无需始终连接名称和姓氏。类似的东西:
Player
答案 1 :(得分:1)
var results = yourContext.Players
.Select(p => new PlayersViewModel
{
PlayerID = p.PlayerID,
PlayerName = p.PlayerName,
TeamID = context.PlayersInTeams.Where(x => x.PlayerID == p.PlayerID)
}).ToList();
答案 2 :(得分:0)
您需要使用group将它们分组:
var teamsFinal = from p in pit
join pd in playerDetail on p.PlayerID equals pd.PlayerID
where pd.IsArchived == false
group new {p,pd} by new
{
pd.PlayerID ,
pd.ForeName,
pd.SurName
} into g
select new PlayersViewModel
{
TeamID = g.Select(x => x.p.TeamID).ToList(),
PlayerID = g.Key.PlayerID,
PlayerName = g.Key.ForeName + " " + g.Key.SurName
};