【问题标题】:Can i use nested queries for database entities in LINQ?我可以在 LINQ 中对数据库实体使用嵌套查询吗?
【发布时间】:2016-05-27 17:12:00
【问题描述】:

我正在开发一个使用 SQL-Server DB 和数据库实体的 ASP.Net 应用程序。 此外,我得到了三个相互依赖的数据库实体。 这是依赖层次结构:

  • 实例(键:InstanceID)
    • CustomField(键:CustomFieldID、InstanceID)
    • CustomFieldData(键:CustomFieldDataID、CustomFieldID)
      • CustomFieldData_Person(键:CustomFieldData_PersonID、CustomFieldDataID)

我可以通过 InstanceID 从实体 CustomField 中找出条目:

var customFieldEntries = DB_Instance_Singleton.getInstance.CustomField.Where(x => x.InstanceID == instanceId);

现在我想从 CustomFieldData_Person 中找出属于以 InstanceID 作为键的层次结构的所有条目。

在 SQL 中我会这样写:

SELECT * FROM CustomFieldData_Person WHERE CustomFieldDataID in (
  SELECT * FROM CustomFieldData WHERE CustomFieldID in (
    SELECT * FROM CustomField WHERE InstanceID = instanceId))

不幸的是,我对 LINQ 完全陌生。 所以我的问题是,如何在 LINQ 中编写这样的嵌套查询(根据上面的第一个代码示例)?

提前致谢!

【问题讨论】:

标签: c# asp.net entity-framework linq


【解决方案1】:

首先,如果您正确创建了 ER 模型,您将已经为您设置了大部分逻辑

Person 会有一个 Person.CustomData 属性,它有 Field 和 Value 的属性,所以你可以导航对象结构

但是,如果您没有,那么您可以将 in 语句转换为 Contains

CustomFieldData_Person.Where(cfdp=>CustomFieldData.Where(nested query for CustomFieldData).Contains(cfdp.CustomFieldDataID )

【讨论】:

    【解决方案2】:

    我认为link 可能是您提出问题的一个很好的起点。不管怎样,看看 Pranav 的评论,它指出了一个有用的问题

    【讨论】:

      猜你喜欢
      • 2021-06-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-04-08
      • 2019-07-21
      • 2011-12-01
      相关资源
      最近更新 更多