0

我有一个主表,其中包含两个表的公共信息。此外,我有两个表,其中包含每种类型的特定信息。最后,我有一个与这两个辅助表中的任何一个都有关系的最后一个表。最后一个表可能与这个辅助表中的一个或两个有关系。

型号为:

  • MainTable(IDMainTable,名称...)
  • Secondary01(IDSecondary01,IDMaintable,名称....)
  • Secondary02(IDSecondary02, IDMainTable 名称....)
  • 数据(IDData,名称...)
  • 数据关系(IDData,IDSecondary01,IDSecondary02)

我想获取主表中的所有寄存器,其中任何辅助表都与数据有关系。我有 IDData 作为条件。

在 SQL 中它会是这样的:

select * from Maintable, Secondary01, DataRelationship
where MainTable.IDMainTable = Secondary01.IDMainTable
and Secondary01.IDSecondary01 = DataRelationship.IDSecondary01
and DataRelationship.IDData = 1234

UNION
select * from Maintable, Secondary02, DataRelationship
where MainTable.IDMainTable = Secondary02.IDMainTable
and Secondary02.IDSecondary02 = DataRelationship.IDSecondary02
and DataRelationship.IDData = 1234

如何使用扩展方法或 linq 对实体进行此查询?

谢谢。

4

1 回答 1

1

你可以使用Enumerable.Union方法。

使用默认相等比较器生成两个序列的集合并集。

喜欢:

var query = (from t in db.Maintable
            from r in db.Secondary02
            //.....your rest of query
            select ...)
            .Union
            (from t in db.Maintable
            from r in db.Secondary02
            //.....your rest of query
            select ...);
于 2013-07-31T17:24:27.970 回答