我想知道在通过多个字段连接两个表时,如何在Linq中编写内部联接。
例如,假设这是SQL等价物:
SELECT tableOne.fieldThree
FROM table_One AS tableOne,
table_Two AS tableTwo,
WHERE
tableOne.fieldOne == tableTwo.fieldOne AND
tableOne.fieldTwo == tableTwo.fieldTwo;
我试过了:
tableTwo.Join(tableOne,
two => new { two.fieldOne, two.fieldTwo },
one => new { one.fieldOne, one.fieldTwo },
(two, one) => one.fieldThree)
.ToList();
但编译器显示的错误表明无法从使用中推断出该方法。
感谢。
答案 0 :(得分:1)
你的方法很好并且会奏效。您只需要修复编译器错误。可能是,查询中的两个匿名类型不是同一类型。如果字段的顺序发生变化,或者它们的类型不完全匹配,则很容易发生这种情况。
但这是一个C#问题。一旦你通过,你的ORM将支持这一点。
答案 1 :(得分:0)
我能看到的最简单方法是使用' Union'方法。只需通过多个字段从两个表中提取数据,然后在它们上使用Union。这将连接两个表,没有重复。