SQL and Entity Framework Equivalents cheat sheet
SELECT
SQL
SELECT * FROM Employee;
Entity Framework (LINQ Query)
var employees = context.Employees.ToList();
SELECT DISTINCT
SQL
SELECT DISTINCT DepartmentId FROM Employee;
Entity Framework (LINQ Query)
var distinctDepartmentIds = context.Employees .Select(e => e.DepartmentId) .Distinct() .ToList();
WHERE
SQL
SELECT * FROM Employee WHERE Salary > 70000;
Entity Framework (LINQ Query)
var highSalaryEmployees = from e in context.Employees where e.Salary > 70000 select e;
LINQ Lambda
var highSalaryEmployees = context.Employees .Where(e => e.Salary > 70000) .ToList();
ORDER BY (Descending)
SQL
SELECT * FROM Employee ORDER BY Salary DESC;
Entity Framework (LINQ Query)
var orderedBySalary = from e in context.Employees orderby e.Salary descending select e;
LINQ Lambda
var orderedBySalary = context.Employees .OrderByDescending(e => e.Salary) .ToList();
AND Operator
SQL
SELECT * FROM Employee WHERE Salary > 70000 AND DepartmentId = 1;
Entity Framework (LINQ Query)
var filteredEmployees = from e in context.Employees where e.Salary > 70000 && e.DepartmentId == 1 select e;
LINQ Lambda
var filteredEmployees = context.Employees .Where(e => e.Salary > 70000 && e.DepartmentId == 1) .ToList();
OR Operator
SQL
SELECT * FROM Employee WHERE Salary > 70000 OR DepartmentId = 3;
Entity Framework (LINQ Query)
var filteredEmployees = from e in context.Employees where e.Salary > 70000 || e.DepartmentId == 3 select e;
LINQ Lambda
var filteredEmployees = context.Employees .Where(e => e.Salary > 70000 || e.DepartmentId == 3) .ToList();
NOT Operator
SQL
SELECT * FROM Employee WHERE NOT DepartmentId = 2; SELECT * FROM Employee WHERE DepartmentId != 2; SELECT * FROM Employee WHERE DepartmentId <> 2;
Entity Framework (LINQ Query)
var filteredEmployees = from e in context.Employees where e.DepartmentId != 2 select e;
LINQ Lambda
var filteredEmployees = context.Employees .Where(e => e.DepartmentId != 2) .ToList();
INSERT INTO
SQL
INSERT INTO Employee (Name, DepartmentId, Salary, HireDate) VALUES ('Eve', 2, 68000, '2024-07-27');
Entity Framework (LINQ Query)
var newEmployee = new Employee { Name = "Eve", DepartmentId = 2, Salary = 68000, HireDate = DateTime.Parse("2024-07-27") }; context.Employees.Add(newEmployee); context.SaveChanges();
NULL VALUES
SQL
SELECT * FROM Employee WHERE HireDate IS NULL;
Entity Framework (LINQ Query)
var employeesWithNullHireDate = from e in context.Employees where e.HireDate == null select e;
LINQ Lambda
var employeesWithNullHireDate = context.Employees .Where(e => e.HireDate == null) .ToList();
UPDATE
SQL
UPDATE Employee SET Salary = 85000 WHERE EmployeeId = 2;
Entity Framework (LINQ Query)
// Retrieve the entity var employee = context.Employees .FirstOrDefault(e => e.EmployeeId == 2); // Modify the field if (employee != null) { employee.Salary = 85000; } context.SaveChanges();
DELETE
SQL
DELETE FROM Employee WHERE EmployeeId = 4;
Entity Framework (LINQ Query)
var employeeToDelete = context.Employees.Find(4); if (employeeToDelete != null) { context.Employees.Remove(employeeToDelete); context.SaveChanges(); }
SELECT TOP
SQL
SELECT TOP 2 * FROM Employee ORDER BY Salary DESC;
Entity Framework (LINQ Query)
var topEmployees = (from e in context.Employees orderby e.Salary descending select e).Take(2).ToList();
LINQ Lambda
var topEmployees = context.Employees .OrderByDescending(e => e.Salary) .Take(2) .ToList();
AGGREGATE FUNCTIONS (MIN, MAX, COUNT, SUM, AVG)
SQL
--MIN SELECT MIN(Salary) AS MinSalary FROM Employee; --MAX SELECT MAX(Salary) AS MaxSalary FROM Employee; --COUNT SELECT COUNT(*) AS TotalEmployees FROM Employee; --SUM SELECT SUM(Salary) AS TotalSalary FROM Employee; --AVG SELECT AVG(Salary) AS AverageSalary FROM Employee;
Entity Framework (LINQ Query)
var minSalary = (from e in context.Employees select e.Salary).Min(); var maxSalary = (from e in context.Employees select e.Salary).Max(); var totalEmployees = (from e in context.Employees select e).Count(); var totalSalary = (from e in context.Employees select e.Salary).Sum(); var averageSalary = (from e in context.Employees select e.Salary).Average();
LINQ Lambda
var minSalary = context.Employees .Min(e => e.Salary); var maxSalary = context.Employees .Max(e => e.Salary); var totalEmployees = context.Employees.Count(); var totalSalary = context.Employees .Sum(e => e.Salary); var averageSalary = context.Employees .Average(e => e.Salary);
LIKE
SQL
SELECT * FROM Employee WHERE Name LIKE '%o%';
Entity Framework (LINQ Query)
var employeesWithO = from e in context.Employees where e.Name.Contains("o") select e;
LINQ Lambda
var employeesWithO = context.Employees .Where(e => e.Name.Contains("o")) .ToList();
WILDCARDS
SQL
SELECT * FROM Employee WHERE Name LIKE 'C%';
Entity Framework (LINQ Query)
var employeesStartingWithC = from e in context.Employees where e.Name.StartsWith("C") select e;
LINQ Lambda
var employeesStartingWithC = context.Employees .Where(e => e.Name.StartsWith("C")) .ToList();
IN
SQL
SELECT * FROM Employee WHERE DepartmentId IN (1, 3);
Entity Framework (LINQ Query)
var employeesInDepartments = from e in context.Employees where e.DepartmentId == 1 || e.DepartmentId == 3 select e;
LINQ Lambda
var departmentIds = new[] { 1, 3 }; var employeesInDepartments = context.Employees .Where(e => departmentIds.Contains(e.DepartmentId)) .ToList();
BETWEEN
SQL
SELECT * FROM Employee WHERE Salary BETWEEN 70000 AND 75000;
Entity Framework (LINQ Query)
var salaryRangeEmployees = from e in context.Employees where e.Salary >= 70000 && e.Salary <= 75000 select e;
LINQ Lambda
var salaryRangeEmployees = context.Employees .Where(e => e.Salary >= 70000 && e.Salary <= 75000) .ToList();
ALIASES
SQL
SELECT Name AS EmployeeName, Salary FROM Employee AS E;
Entity Framework (LINQ Query)
var employeeNamesAndSalaries = from e in context.Employees select new { EmployeeName = e.Name, e.Salary };
LINQ Lambda
var employeeNamesAndSalaries = context.Employees .Select(e => new { EmployeeName = e.Name, e.Salary }) .ToList();
JOIN
SQL
SELECT e.EmployeeId, e.Name, d.DepartmentName FROM Employee e INNER JOIN Department d ON e.DepartmentId = d.DepartmentId;
Entity Framework (LINQ Query)
var employeeDepartments = from e in context.Employees join d in context.Departments on e.DepartmentId equals d.DepartmentId select new { e.EmployeeId, e.Name, d.DepartmentName };
LINQ Lambda
var employeeDepartments = context.Employees .Join(context.Departments, e => e.DepartmentId, d => d.DepartmentId, (e, d) => new { e.EmployeeId, e.Name, d.DepartmentName }) .ToList();
LEFT JOIN
SQL
SELECT e.EmployeeId, e.Name, d.DepartmentName FROM Employee e LEFT JOIN Department d ON e.DepartmentId = d.DepartmentId;
Entity Framework (LINQ Query)
var employeeDepartments = from e in context.Employees join d in context.Departments on e.DepartmentId equals d.DepartmentId into empDept from d in empDept.DefaultIfEmpty() select new { e.EmployeeId, e.Name, DepartmentName = d != null ? d.DepartmentName : null };
LINQ Lambda
var employeeDepartments = context.Employees .GroupJoin(context.Departments, e => e.DepartmentId, d => d.DepartmentId, (e, deptGroup) => new { e, deptGroup }) .SelectMany(x => x.deptGroup.DefaultIfEmpty(), (x, d) => new { x.e.EmployeeId, x.e.Name, DepartmentName = d != null ? d.DepartmentName : null }) .ToList();
RIGHT JOIN
SQL
SELECT e.EmployeeId, e.Name, d.DepartmentName FROM Employee e RIGHT JOIN Department d ON e.DepartmentId = d.DepartmentId;
Entity Framework (LINQ Query)
var departmentsEmployees = from d in context.Departments join e in context.Employees on d.DepartmentId equals e.DepartmentId into deptEmp from e in deptEmp.DefaultIfEmpty() select new { e != null ? e.EmployeeId : (int?)null, e != null ? e.Name : null, d.DepartmentName };
LINQ Lambda
var departmentsEmployees = context.Departments .GroupJoin(context.Employees, d => d.DepartmentId, e => e.DepartmentId, (d, empGroup) => new { d, empGroup }) .SelectMany(x => x.empGroup.DefaultIfEmpty(), (x, e) => new { EmployeeId = e != null ? e.EmployeeId : (int?)null, Name = e != null ? e.Name : null, x.d.DepartmentName }) .ToList();
FULL JOIN
SQL
SELECT e.EmployeeId, e.Name, d.DepartmentName FROM Employee e FULL OUTER JOIN Department d ON e.DepartmentId = d.DepartmentId;
Entity Framework (LINQ Query)
var leftJoin = from e in context.Employees join d in context.Departments on e.DepartmentId equals d.DepartmentId into empDept from d in empDept.DefaultIfEmpty() select new { e.EmployeeId, e.Name, DepartmentName = d != null ? d.DepartmentName : null }; var rightJoin = from d in context.Departments join e in context.Employees on d.DepartmentId equals e.DepartmentId into deptEmp from e in deptEmp.DefaultIfEmpty() select new { EmployeeId = e != null ? e.EmployeeId : (int?)null, Name = e != null ? e.Name : null, d.DepartmentName }; var fullJoin = leftJoin.Union(rightJoin).ToList();
SELF JOIN
SQL
SELECT e1.EmployeeId AS EmployeeId1, e1.Name AS Name1, e2.EmployeeId AS EmployeeId2, e2.Name AS Name2 FROM Employee e1 INNER JOIN Employee e2 ON e1.DepartmentId = e2.DepartmentId AND e1.EmployeeId != e2.EmployeeId;
Entity Framework (LINQ Query)
var selfJoin = from e1 in context.Employees join e2 in context.Employees on e1.DepartmentId equals e2.DepartmentId where e1.EmployeeId != e2.EmployeeId select new { EmployeeId1 = e1.EmployeeId, Name1 = e1.Name, EmployeeId2 = e2.EmployeeId, Name2 = e2.Name };
LINQ Lambda
var selfJoin = context.Employees .Join(context.Employees, e1 => e1.DepartmentId, e2 => e2.DepartmentId, (e1, e2) => new { e1, e2 }) .Where(x => x.e1.EmployeeId != x.e2.EmployeeId) .Select(x => new { EmployeeId1 = x.e1.EmployeeId, Name1 = x.e1.Name, EmployeeId2 = x.e2.EmployeeId, Name2 = x.e2.Name }) .ToList();
UNION
SQL
SELECT Name FROM Employee UNION SELECT DepartmentName AS Name FROM Department;
Entity Framework (LINQ Query)
var employeeNames = context.Employees .Select(e => e.Name); var departmentNames = context.Departments .Select(d => d.DepartmentName); var allNames = employeeNames.Union(departmentNames).ToList();
LINQ Lambda
var employeeNames = context.Employees .Select(e => e.Name); var departmentNames = context.Departments .Select(d => d.DepartmentName); var allNames = employeeNames .Union(departmentNames) .ToList();
GROUP BY
SQL
SELECT DepartmentId, COUNT(*) AS NumberOfEmployees FROM Employee GROUP BY DepartmentId;
Entity Framework (LINQ Query)
var employeeCountsByDepartment = from e in context.Employees group e by e.DepartmentId into g select new { DepartmentId = g.Key, NumberOfEmployees = g.Count() };
LINQ Lambda
var employeeCountsByDepartment = context.Employees .GroupBy(e => e.DepartmentId) .Select(g => new { DepartmentId = g.Key, NumberOfEmployees = g.Count() }) .ToList();
HAVING
SQL
SELECT DepartmentId, COUNT(*) AS NumberOfEmployees FROM Employee GROUP BY DepartmentId HAVING COUNT(*) > 1;
Entity Framework (LINQ Query)
var departmentsWithMoreThanOneEmployee = from e in context.Employees group e by e.DepartmentId into g where g.Count() > 1 select new { DepartmentId = g.Key, NumberOfEmployees = g.Count() };
LINQ Lambda
var departmentsWithMoreThanOneEmployee = context.Employees .GroupBy(e => e.DepartmentId) .Where(g => g.Count() > 1) .Select(g => new { DepartmentId = g.Key, NumberOfEmployees = g.Count() }) .ToList();
EXISTS
SQL
SELECT * FROM Employee WHERE EXISTS (SELECT 1 FROM Department WHERE DepartmentId = Employee.DepartmentId);
Entity Framework (LINQ Query)
var employeesWithDepartments = from e in context.Employees where context.Departments.Any(d => d.DepartmentId == e.DepartmentId) select e;
LINQ Lambda
var employeesWithDepartments = context.Employees .Where(e => context.Departments .Any(d => d.DepartmentId == e.DepartmentId)) .ToList();
ANY
SQL
SELECT * FROM Employee WHERE Salary > ANY (SELECT Salary FROM Employee WHERE DepartmentId = 1);
Entity Framework (LINQ Query)
var salariesInDepartment1 = (from e in context.Employees where e.DepartmentId == 1 select e.Salary).ToList(); var employeesWithHigherSalary = from e in context.Employees where e.Salary > salariesInDepartment1.Max() select e;
LINQ Lambda
var salariesInDepartment1 = context.Employees .Where(e => e.DepartmentId == 1) .Select(e => e.Salary) .ToList(); var employeesWithHigherSalary = context.Employees .Where(e => e.Salary > salariesInDepartment1.Max()) .ToList();
ALL
SQL
SELECT * FROM Employee WHERE Salary > ALL (SELECT Salary FROM Employee WHERE DepartmentId = 1);
Entity Framework (LINQ Query)
var salariesInDepartment1 = (from e in context.Employees where e.DepartmentId == 1 select e.Salary).ToList(); var employeesWithHigherSalary = from e in context.Employees where e.Salary > salariesInDepartment1.Min() select e;
LINQ Lambda
var salariesInDepartment1 = context.Employees .Where(e => e.DepartmentId == 1) .Select(e => e.Salary) .ToList(); var employeesWithHigherSalary = context.Employees .Where(e => e.Salary > salariesInDepartment1.Min()) .ToList();
SELECT INTO
SQL
SELECT * INTO NewEmployeeTable FROM Employee;
Entity Framework (LINQ Query)
var employees = context.Employees.ToList(); // Create a new table and add the data // Assuming you have a DbSet<NewEmployeeTable> in your context context.NewEmployeeTable.AddRange(employees.Select(e => new NewEmployeeTable { EmployeeId = e.EmployeeId, Name = e.Name, DepartmentId = e.DepartmentId, Salary = e.Salary, HireDate = e.HireDate })); context.SaveChanges();
INSERT INTO SELECT
SQL
INSERT INTO NewEmployeeTable (EmployeeId, Name, DepartmentId, Salary, HireDate) SELECT EmployeeId, Name, DepartmentId, Salary, HireDate FROM Employee;
Entity Framework (LINQ Query)
var employees = context.Employees.ToList(); context.NewEmployeeTable.AddRange(employees.Select(e => new NewEmployeeTable { EmployeeId = e.EmployeeId, Name = e.Name, DepartmentId = e.DepartmentId, Salary = e.Salary, HireDate = e.HireDate })); context.SaveChanges();
CASE
SQL
SELECT Name, CASE WHEN Salary > 75000 THEN 'High' WHEN Salary BETWEEN 60000 AND 75000 THEN 'Medium' ELSE 'Low' END AS SalaryLevel FROM Employee;
Entity Framework (LINQ Query)
var employeesWithSalaryLevel = from e in context.Employees select new { e.Name, SalaryLevel = e.Salary > 75000 ? "High" : e.Salary >= 60000 && e.Salary <= 75000 ? "Medium" : "Low" };
LINQ Lambda
var employeesWithSalaryLevel = context.Employees .Select(e => new { e.Name, SalaryLevel = e.Salary > 75000 ? "High" : e.Salary >= 60000 && e.Salary <= 75000 ? "Medium" : "Low" }) .ToList();
NULL Function
SQL
SELECT Name, COALESCE(Salary, 0) AS Salary FROM Employee;
Entity Framework (LINQ Query)
var employeesWithSalary = from e in context.Employees select new { e.Name, Salary = e.Salary.HasValue ? e.Salary.Value : 0 };
LINQ Lambda
var employeesWithSalary = context.Employees .Select(e => new { e.Name, Salary = e.Salary.HasValue ? e.Salary.Value : 0 }) .ToList();
Pagination
SQL
-- Get page 2 with 10 records per page SELECT * FROM Employee ORDER BY EmployeeId OFFSET 10 ROWS FETCH NEXT 10 ROWS ONLY;
Entity Framework (LINQ Query)
int pageNumber = 2; int pageSize = 10; var pagedEmployees = context.Employees .OrderBy(e => e.EmployeeId) .Skip((pageNumber - 1) * pageSize) .Take(pageSize) .ToList();
LINQ Lambda
int pageNumber = 2; int pageSize = 10; var pagedEmployees = context.Employees .OrderBy(e => e.EmployeeId) .Skip((pageNumber - 1) * pageSize) .Take(pageSize) .ToList();
Subquery
SQL
-- Get employees who earn more than the average salary SELECT * FROM Employee WHERE Salary > (SELECT AVG(Salary) FROM Employee);
Entity Framework (LINQ Query)
var averageSalary = context.Employees .Average(e => e.Salary); var highEarningEmployees = from e in context.Employees where e.Salary > averageSalary select e;
LINQ Lambda
var averageSalary = context.Employees .Average(e => e.Salary); var highEarningEmployees = context.Employees .Where(e => e.Salary > averageSalary) .ToList();