Как преобразовать этот SQL QUERY TO LINQ для Entity Framework - PullRequest
0 голосов
/ 11 апреля 2019

Я очень новичок в LINQ, сейчас пытаюсь изучить основы запросов, мне нужно преобразовать этот SQL в LINQ из-за Entity Framework.

SELECT Desktop, Notebook,Gmail, Telefone, Smartphone, Rede, Outros 
FROM Atributos, Gestors, Funcionario, CentroCusto 
WHERE Funcionario.Id = Atributos.Funcionario_Id 
AND Funcionario.CentroCusto_Id = CentroCusto.Id 
AND CentroCusto.Gestor_Id = Gestors.Id 
AND Gestors.Email = 'john@email.com'

Ответы [ 2 ]

3 голосов
/ 11 апреля 2019

Здесь есть довольно подробное объяснение в другом вопросе: Как выполнить объединение в linq to sql с синтаксисом метода?

Однако я думаю, что это то, что вы 'Вы ищете:

from g in Gestors
    join f in Funcionario on g.Id equals f.Gestor_Id 
    join a in Atributos on f.Id equals a.Funcionario_Id
    join c in CentroCusto on f.CentroCusto_Id equals c.Id
where g.Email == "john@email.com"
select new 
{
    //your fields with their tables prefixes
}

Для объединений мне нравится использовать этот синтаксис, потому что его легче читать и легче конвертировать из SQL для людей, которые только начали работать с Linq.Вы можете использовать синтаксис лямбды, но если вы только начинаете, это будет легче понять, пока у вас не будет немного больше практики с лямбдами.Кроме того, поскольку я не знаю, как выглядит ваша таблица в приведенном выше запросе (indexes, fk, pk's), вы, вероятно, сможете значительно повысить производительность.

2 голосов
/ 11 апреля 2019

Сущность создает классы, которые отображаются в вашей базе данных.Ниже приведен пример классов и запросов для получения данных

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ConsoleApplication108
{
    class Program
    {

        static void Main(string[] args)
        {
            string email = "john@email.com";
            DataBase db = new DataBase();
            var results = (from atr in db.Atributos
                           join fun in db.Funcionario on atr.Funcionario_Id equals fun.Id
                           join cen in db.CentroCusto on fun.CentroCusto_Id equals cen.Id
                           join ges in db.Gestors on cen.Gestor_Id equals ges.Id
                           where ges.Email == email
                           select new { desktop = atr.Desktop, notebook = atr.Notebook, gmail = atr.Gmail, tele = atr.Telefone, smartPhone = atr.Smartphone, rede = atr.Rede, outros = atr.Outros })
                           .ToList();
        }

    }
    public class DataBase
    {
        public List<Atributos> Atributos { get; set; }
        public List<Gestors> Gestors { get; set; }
        public List<Funcionario> Funcionario { get; set; }
        public List<CentroCusto> CentroCusto { get; set; }
    }
    public class Atributos
    {
        public string Funcionario_Id { get; set; }

        public string Desktop { get; set; }
        public string Notebook { get; set; }
        public string Gmail { get; set; }
        public string Telefone { get; set; }
        public string Smartphone { get; set; }
        public string Rede { get; set; }
        public string Outros { get; set; }
     }
    public class Gestors
    {
        public string Id { get; set; }
        public string Email { get; set; }
    }
    public class Funcionario
    {
        public string Id { get; set; }
        public string CentroCusto_Id { get; set; }
    }
    public class CentroCusto
    {
        public string Id { get; set; }
        public string Gestor_Id { get; set; }
    }






}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...