在 Linq 中联接具有字符串值的表

本文关键字:字符串 Linq | 更新日期: 2023-09-27 18:34:07

我得到了一个数据库。在此数据库中有一个名为 Example 的表,如下所示:

ID    EntityName    EntityID
1     Foo           1
2     Bar           1
3     Foo           2
4     Bar           2

EntityName 和 EntityID 列组合在一起,为 Foo 或 Bar 表生成外键。如果实体名称字段为"Foo",则实体 ID 是指 Foo 表中的 FooID。可悲的是,数据库的结构不会改变。我的问题:

是否可以创建仅根据实体名称的值联接所需表的 Linq 查询?

我正在寻找这样的东西:

from e in examples
join table in [e.EntityName] ON e.EntityID equals table.([EntityID] + "ID")
// etc

能做到吗?

在 Linq 中联接具有字符串值的表

键是 Name 的值数。

由于您有 2 个,因此您使用联合...喜欢这个:

var result = 
(from e in examples
 where e.EntityName == "Foo"
 join foos in foo ON e.EntityID equals foo.fooID
)
.Union
(from e in examples
 where e.EntityName == "Bar"
 join bars in bar ON e.EntityID equals bar.barID
);

这里似乎有"额外",而且速度会更慢,但这应该会导致使用 UNION ALL