entity-framework - 使用Linq To Entities中的多列联接表

标签 entity-framework entity-framework-4 linq-to-entities

Linq to Entities中每个联接的示例都只涉及on子句中的一列。如果需要两列或更多列才能使join工作,语法是什么?如果可能,我还需要一个Linq to Entities查询表达式和基于方法的示例。以下是我需要的示例。 Table1和Table2之间没有关系。

CREATE TABLE dbo.Table1 (
  ID1Table1 INT NOT NULL,
  ID2Table1 SMALLDATETIME NOT NULL,
  Value1Table1 VARCHAR(50) NOT NULL,
  CONSTRAINT PK_Table1 PRIMARY KEY (ID1Table1, ID2Table1));
CREATE TABLE dbo.Table2 (
  ID1Table2 INT NOT NULL,
  ID2Table2 SMALLDATETIME NOT NULL,
  ID3Table2 INT NOT NULL,
  Value1Table2 VARCHAR(50) NOT NULL,
  CONSTRAINT PK_Table2 PRIMARY KEY (ID1Table2, ID2Table2, ID3Table2));

SELECT a.ID1Table1, a.ID2Table1, a.Value1Table1, b.ID3Table2, b.Value1Table2
FROM dbo.Table1 a JOIN dbo.Table2 b
  ON a.ID1Table1 = b.ID1Table2
  AND a.ID2Table1 = b.ID2Table2

最佳答案

您可以使用以下两个表达式编写它:

from a in Table1s 
from b in Table2s
where a.ID1Table1 == b.ID1Table2 && a.ID2Table1 == b.ID2Table2
select new {a.ID1Table1, a.ID2Table1, a.Value1Table1, b.ID3Table2, b.Value1Table2}

使用join:
from a in Table1s
join b in Table2s on new{PropertyName1 = a.ID1Table1, PropertyName2 = a.ID2Table1} equals new{PropertyName1 = b.ID1Table2, PropertyName2 = b.ID2Table2}
select new {a.ID1Table1, a.ID2Table1, a.Value1Table1, b.ID3Table2, b.Value1Table2}

关于entity-framework - 使用Linq To Entities中的多列联接表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4736316/

相关文章:

asp.net - 将 Eval 与 Sum() 和 Count() 与 ASP.Net EntityFramework 和 ListView 一起使用

entity-framework-4 - Entity Framework 4.1 和 SQL Compact 所需的程序集是什么?

entity-framework - Entity Framework 中的可插入约定

entity-framework - 如何在 linq to Entity Framework 中编写 row_number() over 子句

.net - 相同 POCO 类的多个 edmx

c# - 无法跟踪实体类型 'xTestType' 的实例,因为已跟踪具有相同键的该类型的另一个实例?

c# - 集合的 Where 子句

c# - 什么是有效的 Entity Framework 查询来检查用户是否是 friend ?

c# - Entity Framework 数据库首先出现加载相关实体的问题(ASP.NET Web api)

asp.net - 动态数据 - 创建友好的列名称?