c# - LINQ Max() 在列表里面的列表
问题描述
我正在为 LINQ 查询而苦苦挣扎。我必须在所有选区(使用选区列表)中找到候选人的最高票数(Max)并获得选区名称、候选人名称和投票值。这意味着我必须在两个列表中找到最高值并选择对象选区(或至少获取它的值)。
public class ListOfConstituencies()
{
public List<Constituency> Constituencies {get;set;}
}
public class Constituency
{
public string ConstituencyName {get;set;}
public List<Candidate> Candidates {get;set;}
}
public class Candidate
{
public string CandidateName {get;set;}
public int Votes {get;set;}
}
我尝试了许多解决方案,但找不到适合我的问题的解决方案,例如: 使用 LINQ 查询和基于顺序的两个参数或 Linq 表达式连接两个表以查找 List<List<int>> 的最大值?
解决方案
您可以在包含选区和候选人的单个可枚举匿名对象中进行选择,然后排序并获取第一个。
var candidate = Contituencies
.SelectMany(constituency => constituency.Candidates.Select(candidate =>
new
{
Constituency = constituency,
Candidate = candidate
}))
.OrderByDescending(candidateInfo => candidateInfo.Candidate.Votes).FirstOrDefault();
string constituencyName = candidate.Constituency.ConstituencyName;
string candidatename = candidate.Candidate.CandidateName;
int votes = candidate.Candidate.Votes;
推荐阅读
- elm - 在 elm 中为 html 事件链接联合类型
- php - PDO 查询在本地工作,而不是在服务器上
- javascript - 当复选框长度大于 1 时,提交按钮未启用
- javascript - Javascript 最深节点
- android - webview 导致我的应用程序在几分钟后崩溃
- mysql - 如何获取具有分组条件的行数
- angular - Bootstrap Carousel 图像在 Angular 6 中显示两次
- mainframe - 是否有可用的 JCL REST 客户端?
- python-3.x - 在 Woocommerce 中创建离线退款
- karate - 处理来自 ADFS 的 JWT 不记名令牌