LINQ to SQL:在多个列上进行多个连接。这可能吗?
鉴于:
一个名为
TABLE_1
的表,其中包含以下列:
ID
ColumnA
ColumnB
ColumnC
我有SQL查询,其中TABLE_1
基于ColumnA
,ColumnB
,ColumnC
连接两次。查询可能如下所示:
Select t1.ID, t2.ID, t3.ID
From TABLE_1 t1
Left Join TABLE_1 t2 On
t1.ColumnA = t2.ColumnA
And t1.ColumnB = t2.ColumnB
And t1.ColumnC = t2.ColumnC
Left Join TABLE_1 t3 On
t2.ColumnA = t3.ColumnA
And t2.ColumnB = t3.ColumnB
And t2.ColumnC = t3.ColumnC
... and query continues on etc.
问题:
我需要在LINQ中重写Query。我试过去刺它:
var query =
from t1 in myTABLE1List // List<TABLE_1>
join t2 in myTABLE1List
on t1.ColumnA equals t2.ColumnA
&& t1.ColumnB equals t2.ColumnA
// ... and at this point intellisense is making it very obvious
// I am doing something wrong :(
如何在LINQ中编写查询?我究竟做错了什么?
没有找到相关结果
已邀请:
8 个回复
抵浮细
您必须利用匿名类型并为要比较的多个列组成一个类型。 这一开始似乎令人困惑,但是一旦你熟悉了SQL从表达式组成的方式它会更有意义,在封面下这将生成你正在寻找的连接类型。 编辑根据注释添加第二个连接的示例。
磐乓铝举
将生成查询
在我看来,这更具可读性,让你专注于你的特殊条件而不是连接的实际机制。 编辑 这当然只适用于您希望加入我们的数据库模型的行。如果你想加入“模特之外”,你需要采用手动连接,如Quintin Robinson的回答
舶啥戚
泉秘胁
哩翔购
田眯衅
诧不达
你换
如果要将列与多列进行比较。