C# 在LinQ连接查询中使用“或”(将SQL改编为LinQ)

C# 在LinQ连接查询中使用“或”(将SQL改编为LinQ),c#,sql,linq,sql-to-linq-conversion,C#,Sql,Linq,Sql To Linq Conversion,我有一个SQL查询,它基本上通过两个键将MyWords表连接到MyTranslations表。这是我的表格,以便更好地理解 MyWords表: Id WordString LangType MyTranslations表: Id WordColumnAId WordColumnBId 请注意,WordColumnAID和WordColumnBId列是表示MyWords.Id的FKs。 我的SQL查询: 选择MyTranslations.Id ,WordColumnAId ,WordColum

我有一个SQL查询,它基本上通过两个键将MyWords表连接到MyTranslations表。这是我的表格,以便更好地理解

MyWords表:

Id
WordString
LangType
MyTranslations表:

Id
WordColumnAId
WordColumnBId
请注意,WordColumnAID和WordColumnBId列是表示MyWords.Id的FKs。 我的SQL查询:

选择MyTranslations.Id ,WordColumnAId ,WordColumnBId ,MyWords.WordString ,MyWords.LangType 来自MyTranslations 在MyTranslations.WordColumnAId=MyWords.Id或MyTranslations.WordColumnBId=MyWords.Id上加入MyWords 这里是MyWords.LangType=@当前语言类型 我知道,乍一看,将join on与多个键一起使用是没有意义的,但我正在尝试一个交叉查询,该查询将连接两个表,无论该键位于WordColumnAId还是WordColumnBId上

问题 我正在尝试将上面的T-SQL查询改编成LinQ查询。问题是我无法找到解决LinQ问题的方法,在一个连接查询中使用两个键。 以下是到目前为止我得到的信息:

从queryableTranslation中的翻译 在_myWordRepositoryon translation.WordColumnAId等于word.Id//这是我要添加`or translation.WordColumnBId等于word.Id`的地方,但会出现错误。 where word.LangType!=当前语言类型 选择new QueryResultDto{ MyTranslationId=translation.Id, WordString=word.WordString, LanguageType=word.LangType, WordColumnAId=translation.WordColumnAId, WordColumnbId=translation.WordColumnbId, }; 我对LinQ非常陌生,正在努力学习。
所以我的问题是:有没有办法在LinQ实现这一点,或者我是在尝试不可能的事情?我也愿意接受更好的方法。

EF和其他LINQ提供程序在使用以下语法时应将查询转换为内部联接:

变量查询= 从queryableTranslation中的翻译 来自myWordRepository.Whereword=>translation.WordColumnAId==word.Id中的word ||translation.WordColumnBId=word.Id where word.LangType!=当前语言类型 选择new QueryResultDto { MyTranslationId=translation.Id, WordString=word.WordString, LanguageType=word.LangType, WordColumnAId=translation.WordColumnAId, WordColumnbId=translation.WordColumnbId, };
这回答了你的问题吗?谢谢,链接上的答案建议我应该使用where而不是join,但不幸的是缺少两个where的用法:一个用于过滤过滤,另一个用于匹配。考虑到我对LinQ的了解非常有限,Svyatoslav的回答帮助了Moryes!这解决了我的问题,并允许我进行交叉查询。