var res = from H in db.Products
join C in db.customers on H.Username equals C.Username
where C.Username == H.Username
select H;
Results results = res.Single();
Код выше делает внутреннее соединение между С и Н (где положение не является необходимым), и результаты во всех элементах возвращается, где соответствующим образом связанные продукты и клиенты входа существуют.
Выбор H "just" возвращает все данные из продуктов. Поскольку вы заявили, что хотите микшировать, вам нужно сделать это по-другому.
Я сам буду использовать анонимный тип (или объект dto). Для анонимного типа:
select new { Username = H.Username, Product = H.Product, EMail = C.EMail}
Соединенный:
var res = from H in db.Products
join C in db.customers on H.Username equals C.Username
where C.Username == H.Username
select new { Username = H.Username, Product = H.Product, EMail = C.EMail}
Results results = res.Single();
Для DTO (объект передачи данных) вы можете создать класс с открытым набором/получить свойства и использовать выбрать новый MyClass() { ....} вместо select new {}.
DTOS лучше с точки зрения повторного использования, и что у вас есть меньше проблем с записью названия неправильно, что вы используете, ....
Просто выберите с помощью H, C, к сожалению, не может работать поскольку Linq хочет вернуть только отдельные объекты в строку (и, кроме того, всегда один и тот же тип данных). Таким образом, вам нужно поместить контейнер вокруг объектов, которые вы хотите вернуть. В этом случае либо анонимные типы, либо DTO.
В чем именно вы не уверены? .Single() или результат, который сам запрос даст вам, ...? – Thomas
Как его внутреннее соединение, он даст вам только результаты, которые имеют значения как в H, так и в C (где не обязательно, поскольку соединение уже имеет соответствующее значение), если вы не уверены в синтаксисе для внутреннего соединения: http : //stackoverflow.com/questions/37324/what-is-the-syntax-for-an-inner-join-in-linq-to-sql – Thomas
@Thomas Мне интересно, какие значения я получу назад ... например, будет ли это популяризировать класс результатов с именем пользователя электронной почты и продукта? –