c# - LinQ 查询,计算另一个对象列表中的对象列表中的元素数量
问题描述
我有这种结构:
首先,有一个家庭列表。
编辑:每个家庭都包含一组人
编辑:每个人都由性别定义
我必须计算这些人中有多少是男性,有多少是女性,所以这是我尝试的:
int boys = ListOfFams.Where(f => f.persons.Where(p => p.gender == gender.male)).Count();
似乎我不能只询问男性或女性的数量,因为我需要一个条件放在第一个“哪里”之后,但是,我不知道我应该如何构建我的请求。
你们有什么想法吗?
感谢您的时间
再次编辑:谢谢大家的回答,对于关于人群等问题的后期编辑,我们深表歉意。
解决方案
int boy = ListOfFams.Sum(f => f.persons.Count(p => p.gender == gender.male));
这计算了每个家庭的男性人数并总结了结果。
如果您希望这些集合中的任何一个包含null
值,则需要像这样防止这种情况:
int boy = ListOfFams.Sum(f => f?.persons?.Count(p => p?.gender == gender.male) ?? 0);
现在,这仅计算非男性和非男性的人,以及非男性且其列表非null
的家庭的人。
如果一个家庭或一个集合是,他们被算作。null
persons
null
persons
null
0
推荐阅读
- jquery - 光滑的滑块在 IE11 中将图像堆叠在一起,调试器向 jquery.min.js 提供错误
- flutter - 如何在 Box Decoartion 中将背景设置为透明?
- docker - 在 github ci 中进入 docker 容器之前如何在主机中运行命令
- c# - 我想编写一个采用字段名称和新值的方法
- reactjs - 我可以在 React js 中使用 useRef 挂钩而不是 onChange 事件来更新状态吗?
- lua - 那么,我如何在 roblox 工作室中制作可玩的装备
- reactjs - 找不到模块 RecipeStyle.css
- jgrapht - 是否存在带有加权边缘的 DAG?
- java - 将嵌套实体插入 Spring boot (POST) 的基本 JSON
- excel - dataexporter 导出包含链接的空行