entity-framework - 使用子实体上的条件进行一对多(父实体和子实体)Linq
问题描述
我有三个实体
Form
FormProducts (one to Many attach to Form)
FormFields (one to Many attach to Form)
当我得到 Form(使用下面的代码)时,FormProducts 和 FormFields 隐式附加到表单,这是我们所需要的。
Form result = Forms.Where(f => f.Code == "form1").FirstOrDefault()
到目前为止一切顺利,但新的要求是我们还需要检查活动产品的产品标准。
有没有简单的方法呢?或者我应该明确地使用所有三个实体的连接。
我看起来很简单:)
Form result = Forms.Where(f => f.Code == "form1" && f.FormProducts.status == "active").FirstOrDefault()
更新: 对不起,如果我没有说清楚,请考虑表格中的以下数据
Form
id, code(unique)
1, form1,
2, form2
3, form3
FormProduct
id, formid, name, status
1, 1, prod1, true
2, 1, prod2, false
3, 1, prod3, true
FormField
id, formid, name
1, 1, field1
2, 1, field1
3, 1, field1
我喜欢获取 form1 及其所有 formFields 和所有活动 formProducts。这意味着不应包含 Prod2。
解决方案
我不确定这是否是实现它的最佳方法,但这就是我暂时实现它的方式,直到我找到更好的方法。
Form result = Forms.Where(f => f.Code == "form1").FirstOrDefault()
result.FormProducts = result.FormProducts.Where(f.FormProducts.status == "active").ToList();
推荐阅读
- python - 解析 AWS ATHENA 输出
- elasticsearch - 使用 ElasticSearch 按给定数组排序
- android - 如何在android的存储目录中创建文件夹和文件
- sql-server - 如何在 Spark 和 Zepplin 中使用 SQL JDBC 驱动程序
- python - 用python重命名多个文件名
- c - 将 char* 添加到 char**
- java - 存储包含私钥的json文件
- c - 如何使用纯 C 在 main() 函数中初始化全局常量变量?
- php - 比较两个多维数组并根据匹配键替换值
- linux - 在 epoll 被阻塞时添加/删除 fd