gpt4 book ai didi

c# - 选择每组属性值最大的记录

转载 作者:行者123 更新时间:2023-11-30 14:23:51 25 4
gpt4 key购买 nike

我有这样的数据集:

GroupName   GroupValue   MemberName   MemberValue
'Group1' 1 'Member1' 1
'Group1' 1 'Member2' 2
'Group2' 2 'Member3' 3
'Group2' 2 'Member4' 2
'Group3' 2 'Member5' 4
'Group3' 2 'Member6' 1

我要选择的是具有最大值 MemberValue 的行每GroupName , 但仅适用于那些 GroupName最大的 GroupValue ,并将它们传递给委托(delegate)函数。像这样:

'Group2'    2            'Member3'    3
'Group3' 2 'Member5' 4

到目前为止我已经尝试过这种格式...

data.Where(maxGroupValue => 
maxGroupValue.GroupValue == data.Max(groupValue => groupValue.GroupValue))
.Select(FunctionThatTakesData)

...但这只是给了我 Group2 和 Group3 的每个成员。我试过放一个 GroupBy()Select() 之前, 但这会将输出变成 IGrouping<string, DataType>所以FunctionThatTakesData()不知道该怎么办,我不能再做一次Where()仅过滤掉最大值 MemberValue

我该怎么做才能正确过滤此数据集并将其传递到我的函数中?

最佳答案

您可以使用以下 Linq 执行此操作。

var results = data.GroupBy(r = r.GroupValue)
.OrderByDescending(g => g.Key)
.FirstOrDefault()
?.GroupBy(r => r.GroupName)
.Select(g => g.OrderByDescending(r => r.MemberValue).First());

首先,您必须对 GroupValue 进行分组,然后按 Key(即 GroupValue)降序排列这些组,然后取第一个。现在您拥有具有最大 GroupValue 的所有行。然后,您将这些分组到 GroupName 中,然后从这些组中按降序排列 MemberValue 并获取 First 行以获取每个 中的行code>GroupName 具有最大 MemberValue 的组。此外,我在 FirstOrDefault 之后使用 C# 6 空条件运算符 ?. 以防 data 为空。如果您不使用 C# 6,那么您需要预先处理这种情况,您可以改用 First

关于c# - 选择每组属性值最大的记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43804896/

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