c# - 使用 LINQ lambda 在子表中获取最大值
问题描述
所以我有如下数据(注意这些表是简化的):
Header:
Id
1
2
3
Child:
Id HeaderId Code Round
1 1 A 1
2 1 A 2
3 1 B 1
4 2 A 1
5 2 B 1
6 2 C 1
7 3 A 2
8 3 B 1
9 3 A 1
我想从结果上方的数据表中计算他们的孩子在最大轮次中没有 B 的头数应该为 2,因为:
标题 1 在第 2 轮中没有 B(标题 1 最大轮数为 2)
标题 2 在第 1 轮中有 B
标题 3 在第 2 轮中没有 B(标题 3 最大轮数为 2)
这是我尝试过的 linq
var result = data.Where(e =>
!e.Child.Any(a =>
a.Code == "B" &&
a.Round == e.Child.Max(c => c.Round))).Count();
但不起作用,我得到了这个
ORA-00904: "Extent1"."EXPENSE_ID": 标识符无效
"Extent1"."ID" 是 Header 表上的 Id 列
在这种情况下,我怎样才能获得最大回合?
------已解决,谢谢-----
解决方案
事实证明,我的 linq 不工作,因为var result
它是一个IQueryable
所以我需要将其更改为 List using .ToList()
,然后再将其更改回 Queryable using .AsQueryable()
(如果需要),这是最终的 linq:
var result = data.ToList().Where(e =>
!e.Child.Any(a =>
a.Code == "B" &&
a.Round == e.Child.Max(c => c.Round))).Count();
感谢所有帮助过我的人
推荐阅读
- java - SpringBoot App抛出ava.sql.SQLIntegrityConstraintViolationException:无法删除或更新父行:外键约束失败
- docusignapi - 如何使用 sdk 向 docusign 电子邮件添加附件?
- javascript - 用循环构建乘法表
- mongodb - 当查询字段为objectId时,geoNear聚合是否不起作用?
- swift - 当 TextView 的 isScrollEnabled 设置为 false 时自动布局的意外行为
- vue.js - @nuxtjs/apollo 模块请求时间很慢(5 秒)
- python - np.vectorize 只有大小为 1 的数组可以转换为标量
- macos - 为什么在命令行应用程序中在 Retina Mac 上的 NSImage 上绘图会使图像像素加倍
- c - 为什么 pipe() 采用数组而不是指向两个整数的指针?
- python - 在for循环中将dict值添加到数据框