Мне нужны поля в 1 таблице, зависящие от 1 свойства, совпадающего с строками в другой таблице. Я могу написать этот запрос на SQL с подзапросом как таковым:
SELECT *
FROM Table1
WHERE Property1 IN
(
SELECT Property1
FROM Table2
WHERE Property0 = 1
)
Но я прочитал здесь, что это менее сложно и так же легко писать с помощью присоединиться, что я и сделал. Однако пока я не могу вернуть только Table1, как мне хотелось бы, поскольку я использую соединение, которое, если я не ошибаюсь, требует от меня создания этого анонимного типа, как показано ниже. То, что я здесь сделал, работает (я создал другой объект с теми же свойствами, что и в Table1, которые мне нужны), но я не могу не думать, что есть лучший способ сделать это.
Table1.Join(Table2, t1 => t1.Property1, t2 => t2.Property1, (t1, t2) => new
{
t1.Property1,
t1.Property2,
t1.Property3
})
.Select(ob => new UnnecessaryObject
{
Property1 = ob.Property1,
Property2 = ob.Property2,
Property3 = ob.Property3
}
Я также попытался просто создать Table1 в части .Select, но получил ошибку о том, что явное построение не разрешено.
Чтобы прояснить, я хотел бы иметь возможность возвращать IQueryable типа Table1, что, похоже, я должен иметь возможность делать без необходимости создавать UnneededObject ... но я все еще довольно новичок в LINQ, поэтому я Буду признателен за любую помощь, которую вы можете предложить. Заранее спасибо.