Синтаксис метода Linq C#, объединение 3 таблиц - PullRequest
0 голосов
/ 28 апреля 2020

Я работаю над ASP. NET C# WebApi с linq.

У меня есть три таблицы: клиенты, контакты и отделы. В таблице «контакты» я просто сохраняю «id (departamento)» из отдела, которому принадлежит контакт, поэтому, на мой взгляд, мне нужно показать «description (nombre)». Теперь у меня есть следующее:

Таблицы:

enter image description here

Контроллер:

        public clientes GetById(int id)
    {
        projectEntities context = null;
        clientes result = null;

        try
        {
            context = GetContext();
            result = context.clientes
                .Include(e => e.clientes_contactos)
                .FirstOrDefault(e => e.cve_cliente == id);
        }
        catch (Exception exception)
        {
            throw exception;
        }
        finally
        {
            context?.Dispose();
        }

        return result;
    }

С этим Я получаю информацию о клиенте и контактах, но отдел показывает только идентификатор. sh Я пытаюсь выполнить sql запрос:

select a.*, b.*, c.nombre from clientes as a inner join clientes_contactos as b on a.cve_cliente = b.cve_cliente inner join cat_departamentos as c on b.departamento = c.cve_departamentos where a.cve_cliente = 2006    

Дайте мне знать, если мне не хватает какой-либо информации, большое спасибо!

Решено

Как сказал @VadimBondaruk, просто нужно добавить эту строку:

.Include(e => e.clientes_contactos.Select(cc => cc.cat_departament))

Спасибо!

1 Ответ

0 голосов
/ 29 апреля 2020

Вы можете конвертировать в LINQ как

var query = (from a in context.clientes 
        join b in context.clientes_contactos on a.cve_cliente equals b.cve_cliente
        join c in context.cat_departamentos on b.departamento  equals c.cve_departamentos
                 where a.cve_cliente == 2006
                 select new {
                     a = a,
                     b = b,
                     c = c
                 })
...