2015-05-22 3 views
-1

У меня есть SQL-запрос, который я бы хотел преобразовать в Linq, но я просто не могу понять это. Любая помощь будет принята с благодарностью. БлагодаряLinq Inner join с предложением Or

SELECT Distinct Name FROM Context 
inner join Nodes_1 on 
Context.Node1Id= Nodes_1.Id OR 
Context.Node2Id= Nodes_1.Id 
where Context.ContextId = 1 

ответ

1

Это должно работать для вас:

var something = (from a in Context.Where(i => i.ContextId == 1) 
       from b in Nodes_1 
       where (a.Node1Id == b.Id) || (a.Node2Id == b.Id) 
       select a.Name).Distinct(); 
1

JOIN с OR просто UNION из двух отдельных запросов с JOIN. Итак, чтобы воспроизвести его с помощью LINQ, вы должны объединить два запроса linq.

Или вы можете сделать это:

var query = (from entry in Context 
     from node in Nodes_1 
     where node.Id==entry.Node1Id || 
       node.Id==entry.Node2Id 
     where entry.ContextId==1 
     select entry.Name) 
     .Distinct(); 
+0

Это дает мне неправильно. Точно так же, как если бы я использовал SQL-запрос без предложения OR и второго оператора, следующего за – user2516083

Смежные вопросы