简单的 Linqpad Linq join 语句,选择所有字段

4 c# linq join linqpad

我正在尝试在 Linqpad 中进行一个简单的连接查询,以模仿以下内容...

SELECT *     
FROM Companies C    
JOIN Addresses A    
ON A.CompanyID = C.CompanyID    
WHERE C.CompanyID = 123
Run Code Online (Sandbox Code Playgroud)

我正在使用 C# 表达式(所以不需要转储,AFAIK),并尝试了以下失败......

from C in Companies    
join A in Addresses on C.CompanyID equals A.CompanyID    
where C.CompanyID = 123    
select C,A
Run Code Online (Sandbox Code Playgroud)

所以结果是 "name does not exist in current context"

我怀疑这可能是因为两个表中的公共字段,或者 C,A 语法基本上是错误的。

我希望能够在两个表中都执行 splat "*"。这可能吗?

Joh*_*han 6

我相信你的选择应该看起来像

select new { C, A }
Run Code Online (Sandbox Code Playgroud)

或者

select new { Company = C, Address = A }
Run Code Online (Sandbox Code Playgroud)

由于您要返回多个复杂对象,因此应该用匿名类型包装它。或者你可以定义你的类型,然后像这样设置属性

select new MyType { Company = C, Address = A }
Run Code Online (Sandbox Code Playgroud)