gpt4 book ai didi

c# - Linq groupby 返回唯一组

转载 作者:太空狗 更新时间:2023-10-30 00:49:40 26 4
gpt4 key购买 nike

我有记录列表,每条记录都有名称回合Rounds 是由"-"

分隔的串联数字

enter image description here

我怎样才能按名称分组并只显示唯一的轮数,还可以计算轮数并显示第一轮和最后一轮

enter image description here

这是我试过的,

 data.GroupBy(d => d.Name)
.Select(
g => new
{
Name = g.Key,
Rounds = g.Concat(s => s.Rounds),
NumberOfRounds = g.Concat(s => s.Rounds).Split('-').Count,
FirstRound = //??,
LastRound = //??,
});

最佳答案

我会开始将您的实体投影到一个名称和回合集合对。这将更容易使用。例如:

var query = results
.Select(d => new { d.Name, Results = d.Rounds.Split('-').Select(int.Parse).ToList() })
.GroupBy(
d => d.Name, (key, values) => new {
Name = key,
Rounds = values.SelectMany(v => v.Rounds)
.Distinct()
.OrderBy(x => x)
.ToList()
});

由于轮次以列表形式提供,我认为将 NumberOfRoundsFirstRoundLastRound 作为属性没有多大意义,因为您可以只使用 Rounds.CountRounds.First()Rounds.Last()。重要的部分是尽早将数据转换为更有用的格式。

如果您真的需要在属性中使用它,那么投影很容易:

// query as before, but with
.Select(x => new {
x.Name,
x.Rounds,
NumberOfRounds = x.Rounds.Count,
FirstRound = x.Rounds.First(),
LastRound = x.Rounds.Last()
});

关于c# - Linq groupby 返回唯一组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36840623/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com