【发布时间】:2021-01-20 08:28:17
【问题描述】:
我正在创建一个分数跟踪网络应用程序供我和我的朋友使用。跟踪器必须根据回合数最少的玩家已经玩了多少回合来对分数进行分组。
示例:如果我打了 6 局,而我的一个朋友只打了 4 局,那么他的所有局都将计入锦标赛,并且只考虑我最好的 4 局。
这是我目前所拥有的:
[ActionName("List")]
public async Task<IActionResult> List()
{
var allData = await _cosmosDbService.GetScoresAsync(
"SELECT * FROM c");
var countRecordData = allData.GroupBy(l => l.Player).Select(cl => new Score
{
Player = cl.Count().ToString()
}).ToList();
var minRecord = countRecordData.Min(record => record.Player);
int minRecordInt = Int32.Parse(minRecord);
var sumData = allData.GroupBy(l => l.Player).Select(cl => new Score
{
Player = cl.First().Player,
Points = cl.Sum(c => c.Points),
Strokes = cl.Sum(c => c.Points),
}).ToList();
return View(sumData);
}
minRecord 仅用于获取记录数最少的玩家(最少数量)。我没有在其他任何地方使用它。
这是分数模型:
public class Score
{
[JsonProperty(PropertyName = "id")]
public string Id { get; set; }
[JsonProperty(PropertyName = "Player")]
public string Player { get; set; }
[JsonProperty(PropertyName = "Course")]
public string Course { get; set; }
[JsonProperty(PropertyName = "Points")]
public int Points { get; set; }
[JsonProperty(PropertyName = "Strokes")]
public int Strokes { get; set; }
}
有谁知道我怎样才能达到这个要求?
【问题讨论】:
-
还有你的
Player类,示例输入和输出会有所帮助。 -
你到底是在坚持什么?这读起来很像有人可以为我做这件事吗,有点问题,不会得到太多的爱
-
@A.Grefslie:我认为你的问题很好(也许不是很清楚,但我想我理解这个问题)。您很快就对源代码的问题做出了反应,我不认为这是一个坏问题。
-
不知道如何根据回合数最少的玩家的回合数对分数进行分组。这意味着如果我打了 6 轮,而我的朋友打了 4 轮,那么他的所有轮都将计算在内,只有我最好的 4 轮将计算在内。所以排除了我最差的两轮。
-
要将积分计算限制为
minRecordInt匹配,请尝试将积分计算更改为Points = cl.OrderByDescending(c=>c.Points).Take(minRecordInt).Sum(c => c.Points)