我有一個列表中的簡單的播放器對象,如下獲得所有可能的組合和和結果
Name | Team | Position | Total Tom Brady | Team 1 | QB | 200 Adrian Peterson | Team 1 | RB | 250 Calvin Johnson | Team 2 | WR | 260 LeVon Bell | Team 2 | RB | 220 Peyton Manning | Team 3 | QB | 220 Arian Foster | Team 3 | RB | 220
這是一個簡單的示例,在現實中有大約200條記錄。我想要做的是讓每個隊員所有可能的組合,總結他們的總,所以最終的產品將是如下
可能性
Teams | Players | Total Team 1 | Tom Brady, Adrian Peterson | 450 Team 2 | Calvin Johnson, LeVon Bell | 480 Team 3 | Peyton Manning, Arian Foster | 440
基本上我尋找貿易機會,所以我需要得到每支球隊的球員組合。我期待的最大可能的組合是每個球隊5名球員,我將球員和他們的積分組合成一個新對象。現在我可以用下面的方式到達那裏。
var playerList = players.GroupBy(p => p.Team)
.Select(g => new
{
Team = g.Key,
g
}).ToList();
List<Possibilities> possibilities = new List<Possibilities>();
foreach (var a in playerList)
{
List<Possibilities> onePlayer = (from b in a.g
select new Possibilities
{
Players = b.Name,
Total = b.Total,
Team = a.Team
}).ToList();
List<Possibilities> twoPlayer = (from b in a.g
from c in a.g
select new Possibilities
{
Players = b.Name + ", " + c.Name,
Total = b.Total + c.Total,
Team = a.Team
}).ToList();
這讓我的每隊球員1,2,3所有的組合,但我想補充4和5這也不會刪除重複的組合(玩家1,玩家2和玩家2,PLAYER1 )。有沒有更乾淨的方法來做到這一點?
看起來你只是想在「Team」上進行分組,但你到底意味着什麼?每個團隊最多有20個玩家,每個組合最多可以組合5個玩家,所以我希望每個團隊有15.5k個可能。如果你想要所有人你的榜樣不應該包含每個球隊只有一名球員的可能性嗎? – juharr
問題有點不清楚。我會嘗試重新編寫它,或者發佈您迄今爲止編寫的代碼。 – jackncoke
基本上我在尋找交易的可能性,所以我需要得到每支球隊的球員組合。我期待的最大可能的組合是每個球隊5名球員,我將球員和他們的積分組合成一個新對象。那有意義嗎? –