Master technical and career interviews with structured answers—short definition, real examples, pitfalls, and how to answer in 60–90 seconds.
Short answer: Show all departments even if no employees (outer join) var allDepts = from d in departments join e in employees on d.Name equals e.Department into empGroup from eg in empGroup.DefaultIfEmpty() select new {…
Short answer: var names = new[] { "A", "B", "C" }; var scores = new[] { 10, 20, 30 }; var zipped = names.Zip(scores, (n, s) => $"{n} scored {s}"); Example code var names = new[]…
Short answer: object[] mixed = { "One", 2, "Three", 4 }; var numbers = mixed.OfType<int>(); Example code object[] mixed = { "One", 2, "Three", 4 }; var numbers = mixed.OfType…
Short answer: var grouped = employees .GroupBy(e => new { e.Department, e.Salary }); var grouped = employees .GroupBy(e => new { e.Department, e.Salary }); var grouped = employees .GroupBy(e => new { e.Departmen…
Short answer: int pageSize = 3; int pageIndex = 2; var page = employees int pageSize = 3; int pageIndex = 2; var page = employees int pageSize = 3; int pageIndex = 2; var page = employees int pageSize = 3; int pageIndex…
Short answer: Paginate: Get page 2, size 3 int pageSize = 3; int pageIndex = 2; var page = employees .Skip((pageIndex - 1) * pageSize) .Take(pageSize); Paginate: Get page 2, size 3 int pageSize = 3; int pageIndex = 2; va…
Short answer: var query = dbContext.Employees .Where(e => CustomFunction(e.Name)); var query = dbContext.Employees .Where(e => CustomFunction(e.Name)); var query = dbContext.Employees .Where(e => CustomFunction(…
Short answer: Why use AsEnumerable()? var query = dbContext.Employees .AsEnumerable() // switch to in-memory .Where(e => CustomFunction(e.Name)); ✅ Use when your logic can't be translated to SQL. Why use AsEnumerable(…
Short answer: Detect and avoid N+1 query in EF? Use Include() to load related entities: var orders = dbContext.Orders .Include(o => o.Customer) .ToList(); Detect and avoid N+1 query in EF? Use Include() to load relate…
Short answer: How to force immediate execution? Use .ToList(), .ToArray(), .Count(), .First() etc. Follow : Real-world example (ShopNest) ShopNest builds a LINQ query for search filters, then calls ToListAsync() once in…
Short answer: Can we use LINQ on JSON? ✅ Yes — using System.Text.Json or Newtonsoft.Json, then LINQ on parsed objects. Real-world example (ShopNest) ShopNest uses LINQ to query orders: filter by date, project to a summar…
Short answer: var numbers = Enumerable.Range(1, 10); var numbers = Enumerable.Range(1, 10); var numbers = Enumerable.Range(1, 10); var numbers = Enumerable.Range(1, 10); var numbers = Enumerable.Range(1, 10); var numbers…
Short answer: var fives = Enumerable.Repeat("Hi", 5); var fives = Enumerable.Repeat("Hi", 5); var fives = Enumerable.Repeat("Hi", 5); var fives = Enumerable.Repeat("Hi", 5); var fi…
Short answer: What does DefaultIfEmpty() do? Returns a default value if the sequence is empty (e.g. in left join). Say this in the interview Define — one clear sentence (the short answer above). Example — relate it to a…
Short answer: var topEarners = employees .Where(e => e.Salary > employees.Average(x => x.Salary)); Example code var topEarners = employees .Where(e => e.Salary > employees.Average(x => x.Salary)); Real-…
Short answer: .Count(e => e.Department == "IT") > 2; .Count(e => e.Department == "IT") > 2; .Count(e => e.Department == "IT") > 2; .Count(e => e.Department == "IT&q…
Short answer: Check if a department has more than 2 employees? Explain a bit more bool deptCheck = employees .Count(e => e.Department == "IT") > 2; Check if a department has more than 2 employees? bool de…
Short answer: var empDict = employees.ToDictionary(e => e.Id); var empDict = employees.ToDictionary(e => e.Id); var empDict = employees.ToDictionary(e => e.Id); var empDict = employees.ToDictionary(e => e.Id)…
Short answer: var sum = employees .Select(g => new { g.Key, Sum = g.Sum(e => e.Salary) }); Example code var sum = employees .Select(g => new { g.Key, Sum = g.Sum(e => e.Salary) }); Real-world example (ShopNes…
Short answer: Sum salary by department, only if salary > 70k Follow : var sum = employees .Where(e => e.Salary > 70000) .GroupBy(e => e.Department) .Select(g => new { g.Key, Sum = g.Sum(e => e.Salary) }…
Short answer: var dupNames = employees .Select(g => g.Key); var dupNames = employees .Select(g => g.Key); var dupNames = employees .Select(g => g.Key); var dupNames = employees .Select(g => g.Key); var dupNam…
Short answer: Find duplicate names var dupNames = employees .GroupBy(e => e.Name) .Where(g => g.Count() > 1) .Select(g => g.Key); Find duplicate names var dupNames = employees .GroupBy(e => e.Name) .Where(…
Short answer: var merged = list1.Union(list2); var merged = list1.Union(list2); var merged = list1.Union(list2); var merged = list1.Union(list2); var merged = list1.Union(list2); var merged = list1.Union(list2); var merg…
Short answer: var evens = employees.Where(e => e.Id % 2 == 0); var evens = employees.Where(e => e.Id % 2 == 0); var evens = employees.Where(e => e.Id % 2 == 0); var evens = employees.Where(e => e.Id % 2 == 0)…
Short answer: var alphaGroup = employees .GroupBy(e => e.Name[0]); var alphaGroup = employees .GroupBy(e => e.Name[0]); var alphaGroup = employees .GroupBy(e => e.Name[0]); var alphaGroup = employees .GroupBy(e…
LINQ LINQ Tutorial · LINQ
Short answer: Show all departments even if no employees (outer join) var allDepts = from d in departments join e in employees on d.Name equals e.Department into empGroup from eg in empGroup.DefaultIfEmpty() select new { Dept = d.Name, EmpName = eg?.Name ?? "No Employee"
A sales report joins orders and customers, then GroupBy(c => c.City) to show revenue per city.
LINQ LINQ Tutorial · LINQ
Short answer: var names = new[] { "A", "B", "C" }; var scores = new[] { 10, 20, 30 }; var zipped = names.Zip(scores, (n, s) => $"{n} scored {s}");
var names = new[] { "A", "B", "C" };
var scores = new[] { 10, 20, 30 };
var zipped = names.Zip(scores, (n, s) => $"{n} scored {s}");
ShopNest uses LINQ to query orders: filter by date, project to a summary DTO, and order by total—readable C# that becomes SQL under EF Core.
LINQ LINQ Tutorial · LINQ
Short answer: object[] mixed = { "One", 2, "Three", 4 }; var numbers = mixed.OfType<int>();
object[] mixed = { "One", 2, "Three", 4 };
var numbers = mixed.OfType<int>();
ShopNest filters active products with products.Where(p => p.IsActive && p.Stock > 0) before showing the catalog.
LINQ LINQ Tutorial · LINQ
Short answer: var grouped = employees .GroupBy(e => new { e.Department, e.Salary }); var grouped = employees .GroupBy(e => new { e.Department, e.Salary }); var grouped = employees .GroupBy(e => new { e.Department, e.Salary }); var grouped = employees .GroupBy(e => new { e.Department, e.Salary }); var grouped = employees .GroupBy(e => new { e.Department, e.Salary }); var grouped = employees .GroupBy(e => new { e.Department,…
e.Salary }); var grouped = employees .GroupBy(e => new { e.Department, e.Salary }); var grouped = employees .GroupBy(e => new { e.Department, e.Salary });
var grouped = employees .GroupBy(e => new { e.Department, e.Salary }); var grouped = employees .GroupBy(e => new { e.Department, e.Salary }); var grouped = employees .GroupBy(e => new { e.Department, e.Salary }); var grouped = employees .GroupBy(e => new { e.Department, e.Salary }); var grouped = employees .GroupBy(e => new { e.Department, e.Salary }); var grouped = employees .GroupBy(e => new { e.Department, e.Salary }); var grouped = employees .GroupBy(e => new { e.Department, e.Salary }); var grouped = employees .GroupBy(e => new { e.Department, e.Salary });
A sales report joins orders and customers, then GroupBy(c => c.City) to show revenue per city.
LINQ LINQ Tutorial · LINQ
Short answer: int pageSize = 3; int pageIndex = 2; var page = employees int pageSize = 3; int pageIndex = 2; var page = employees int pageSize = 3; int pageIndex = 2; var page = employees int pageSize = 3; int pageIndex = 2; var page = employees int pageSize = 3; int pageIndex = 2; var page = employees int pageSize = 3; int pageIndex = 2; var page = employees int pageSize = 3; int pageIndex = 2; var page = employees int pageSize…
= 3; int pageIndex = 2; var page = employees
int pageSize = 3; int pageIndex = 2; var page = employees int pageSize = 3; int pageIndex = 2; var page = employees int pageSize = 3; int pageIndex = 2; var page = employees int pageSize = 3; int pageIndex = 2; var page = employees int pageSize = 3; int pageIndex = 2; var page = employees int pageSize = 3; int pageIndex = 2; var page = employees int pageSize = 3; int pageIndex = 2; var page = employees int pageSize = 3; int pageIndex = 2; var page = employees
ShopNest uses LINQ to query orders: filter by date, project to a summary DTO, and order by total—readable C# that becomes SQL under EF Core.
LINQ LINQ Tutorial · LINQ
Short answer: Paginate: Get page 2, size 3 int pageSize = 3; int pageIndex = 2; var page = employees .Skip((pageIndex - 1) * pageSize) .Take(pageSize); Paginate: Get page 2, size 3 int pageSize = 3; int pageIndex = 2; var page = employees .Skip((pageIndex - 1) * pageSize) .Take(pageSize); Paginate: Get page 2, size 3 int pageSize = 3; int pageIndex = 2; var page =… employees .Skip((pageIndex - 1) * pageSize) .Take(pageSize);…
Paginate: Get page 2, size 3 int pageSize = 3; int pageIndex = 2; var page = employees .Skip((pageIndex - 1) * pageSize) .Take(pageSize);
ShopNest uses LINQ to query orders: filter by date, project to a summary DTO, and order by total—readable C# that becomes SQL under EF Core.
LINQ LINQ Tutorial · LINQ
Short answer: var query = dbContext.Employees .Where(e => CustomFunction(e.Name)); var query = dbContext.Employees .Where(e => CustomFunction(e.Name)); var query = dbContext.Employees .Where(e => CustomFunction(e.Name)); var query = dbContext.Employees .Where(e => CustomFunction(e.Name));
ShopNest uses LINQ to query orders: filter by date, project to a summary DTO, and order by total—readable C# that becomes SQL under EF Core.
LINQ LINQ Tutorial · LINQ
Short answer: Why use AsEnumerable()? var query = dbContext.Employees .AsEnumerable() // switch to in-memory .Where(e => CustomFunction(e.Name)); ✅ Use when your logic can't be translated to SQL. Why use AsEnumerable()? var query = dbContext.Employees .AsEnumerable() // switch to in-memory .Where(e => CustomFunction(e.Name)); ✅ Use when your… logic can't be translated… to… Why use AsEnumerable()? var query = dbContext.Employees…
AsEnumerable() // switch to in-memory .Where(e => CustomFunction(e.Name)); ✅ Use when your logic can't be translated to SQL. Why use AsEnumerable()? var query = dbContext.Employees .AsEnumerable() // switch to in-memory .Where(e => CustomFunction(e.Name)); ✅ Use when your… logic can't be translated to SQL.
ShopNest uses LINQ to query orders: filter by date, project to a summary DTO, and order by total—readable C# that becomes SQL under EF Core.
LINQ LINQ Tutorial · LINQ
Short answer: Detect and avoid N+1 query in EF? Use Include() to load related entities: var orders = dbContext.Orders .Include(o => o.Customer) .ToList(); Detect and avoid N+1 query in EF? Use Include() to load related entities: var orders = dbContext.Orders .Include(o => o.Customer) .ToList(); Detect and avoid N+1 query in EF? Use Include() to load related entities: var… orders = dbContext.Orders .Include(o => o.Customer)…
ToList(); Detect and avoid N+1 query in EF? Use Include() to load related entities: var orders = dbContext.Orders .Include(o => o.Customer) .ToList();
ShopNest uses LINQ to query orders: filter by date, project to a summary DTO, and order by total—readable C# that becomes SQL under EF Core.
LINQ LINQ Tutorial · LINQ
Short answer: How to force immediate execution? Use .ToList(), .ToArray(), .Count(), .First() etc. Follow :
ShopNest builds a LINQ query for search filters, then calls ToListAsync() once in the repository—so the SQL runs one time, not inside a loop.
LINQ LINQ Tutorial · LINQ
Short answer: Can we use LINQ on JSON? ✅ Yes — using System.Text.Json or Newtonsoft.Json, then LINQ on parsed objects.
ShopNest uses LINQ to query orders: filter by date, project to a summary DTO, and order by total—readable C# that becomes SQL under EF Core.
LINQ LINQ Tutorial · LINQ
Short answer: var numbers = Enumerable.Range(1, 10); var numbers = Enumerable.Range(1, 10); var numbers = Enumerable.Range(1, 10); var numbers = Enumerable.Range(1, 10); var numbers = Enumerable.Range(1, 10); var numbers = Enumerable.Range(1, 10); var numbers = Enumerable.Range(1, 10); var numbers = Enumerable.Range(1, 10);
var numbers = Enumerable.Range(1, 10); var numbers = Enumerable.Range(1, 10); var numbers = Enumerable.Range(1, 10); var numbers = Enumerable.Range(1, 10); var numbers = Enumerable.Range(1, 10); var numbers = Enumerable.Range(1, 10); var numbers = Enumerable.Range(1, 10); var numbers = Enumerable.Range(1, 10);
ShopNest uses LINQ to query orders: filter by date, project to a summary DTO, and order by total—readable C# that becomes SQL under EF Core.
LINQ LINQ Tutorial · LINQ
Short answer: var fives = Enumerable.Repeat("Hi", 5); var fives = Enumerable.Repeat("Hi", 5); var fives = Enumerable.Repeat("Hi", 5); var fives = Enumerable.Repeat("Hi", 5); var fives = Enumerable.Repeat("Hi", 5); var fives = Enumerable.Repeat("Hi", 5); var fives = Enumerable.Repeat("Hi", 5); var fives = Enumerable.Repeat("Hi", 5);
var fives = Enumerable.Repeat("Hi", 5); var fives = Enumerable.Repeat("Hi", 5); var fives = Enumerable.Repeat("Hi", 5); var fives = Enumerable.Repeat("Hi", 5); var fives = Enumerable.Repeat("Hi", 5); var fives = Enumerable.Repeat("Hi", 5); var fives = Enumerable.Repeat("Hi", 5); var fives = Enumerable.Repeat("Hi", 5);
ShopNest uses LINQ to query orders: filter by date, project to a summary DTO, and order by total—readable C# that becomes SQL under EF Core.
LINQ LINQ Tutorial · LINQ
Short answer: What does DefaultIfEmpty() do? Returns a default value if the sequence is empty (e.g. in left join).
LINQ LINQ Tutorial · LINQ
Short answer: var topEarners = employees .Where(e => e.Salary > employees.Average(x => x.Salary));
var topEarners = employees
.Where(e => e.Salary > employees.Average(x => x.Salary));
ShopNest uses LINQ to query orders: filter by date, project to a summary DTO, and order by total—readable C# that becomes SQL under EF Core.
LINQ LINQ Tutorial · LINQ
Short answer: .Count(e => e.Department == "IT") > 2; .Count(e => e.Department == "IT") > 2; .Count(e => e.Department == "IT") > 2; .Count(e => e.Department == "IT") > 2; .Count(e => e.Department == "IT") > 2; .Count(e => e.Department == "IT") > 2; .Count(e => e.Department == "IT") > 2; .Count(e => e.Department == "IT") > 2;
ShopNest uses LINQ to query orders: filter by date, project to a summary DTO, and order by total—readable C# that becomes SQL under EF Core.
LINQ LINQ Tutorial · LINQ
Short answer: Check if a department has more than 2 employees?
bool deptCheck = employees .Count(e => e.Department == "IT") > 2; Check if a department has more than 2 employees? bool deptCheck = employees .Count(e => e.Department == "IT") > 2; Check if a department has more than 2 employees? bool deptCheck = employees .Count(e => e.Department == "IT") > 2; Check if a department has more than 2 employees? bool deptCheck = employees .Count(e => e.Department == "IT") > 2;
ShopNest uses LINQ to query orders: filter by date, project to a summary DTO, and order by total—readable C# that becomes SQL under EF Core.
LINQ LINQ Tutorial · LINQ
Short answer: var empDict = employees.ToDictionary(e => e.Id); var empDict = employees.ToDictionary(e => e.Id); var empDict = employees.ToDictionary(e => e.Id); var empDict = employees.ToDictionary(e => e.Id); var empDict = employees.ToDictionary(e => e.Id); var empDict = employees.ToDictionary(e => e.Id); var empDict = employees.ToDictionary(e => e.Id); var empDict = employees.ToDictionary(e => e.Id);
var empDict = employees.ToDictionary(e => e.Id); var empDict = employees.ToDictionary(e => e.Id); var empDict = employees.ToDictionary(e => e.Id); var empDict = employees.ToDictionary(e => e.Id); var empDict = employees.ToDictionary(e => e.Id); var empDict = employees.ToDictionary(e => e.Id); var empDict = employees.ToDictionary(e => e.Id); var empDict = employees.ToDictionary(e => e.Id);
ShopNest uses LINQ to query orders: filter by date, project to a summary DTO, and order by total—readable C# that becomes SQL under EF Core.
LINQ LINQ Tutorial · LINQ
Short answer: var sum = employees .Select(g => new { g.Key, Sum = g.Sum(e => e.Salary) });
var sum = employees
.Select(g => new { g.Key, Sum = g.Sum(e => e.Salary) });
ShopNest filters active products with products.Where(p => p.IsActive && p.Stock > 0) before showing the catalog.
LINQ LINQ Tutorial · LINQ
Short answer: Sum salary by department, only if salary > 70k Follow : var sum = employees .Where(e => e.Salary > 70000) .GroupBy(e => e.Department) .Select(g => new { g.Key, Sum = g.Sum(e => e.Salary) }); Sum salary by department, only if salary > 70k Follow : var sum = employees .Where(e => e.Salary > 70000) .GroupBy(e => e.Department)… Select(g => new { g.Key, Sum =…… Sum salary by department, only if salary > 70k Follow : var…
sum = employees .Where(e => e.Salary > 70000) .GroupBy(e => e.Department) .Select(g => new { g.Key, Sum = g.Sum(e => e.Salary) }); Sum salary by department, only if salary > 70k Follow : var sum = employees .Where(e => e.Salary > 70000) .GroupBy(e => e.Department)… Select(g => new { g.Key, Sum = g.Sum(e => e.Salary) });
ShopNest uses LINQ to query orders: filter by date, project to a summary DTO, and order by total—readable C# that becomes SQL under EF Core.
LINQ LINQ Tutorial · LINQ
Short answer: var dupNames = employees .Select(g => g.Key); var dupNames = employees .Select(g => g.Key); var dupNames = employees .Select(g => g.Key); var dupNames = employees .Select(g => g.Key); var dupNames = employees .Select(g => g.Key); var dupNames = employees .Select(g => g.Key); var dupNames = employees .Select(g => g.Key); var dupNames = employees .Select(g => g.Key);
var dupNames = employees .Select(g => g.Key); var dupNames = employees .Select(g => g.Key); var dupNames = employees .Select(g => g.Key); var dupNames = employees .Select(g => g.Key); var dupNames = employees .Select(g => g.Key); var dupNames = employees .Select(g => g.Key); var dupNames = employees .Select(g => g.Key); var dupNames = employees .Select(g => g.Key);
ShopNest filters active products with products.Where(p => p.IsActive && p.Stock > 0) before showing the catalog.
LINQ LINQ Tutorial · LINQ
Short answer: Find duplicate names var dupNames = employees .GroupBy(e => e.Name) .Where(g => g.Count() > 1) .Select(g => g.Key); Find duplicate names var dupNames = employees .GroupBy(e => e.Name) .Where(g => g.Count() > 1) .Select(g => g.Key); Find duplicate names var dupNames = employees .GroupBy(e => e.Name) .Where(g => g.Count() > 1) .Select(g => g.Key); Find… duplicate names var dupNames = employees .GroupBy(e => e.Name)…
Where(g => g.Count() > 1) .Select(g => g.Key);
ShopNest uses LINQ to query orders: filter by date, project to a summary DTO, and order by total—readable C# that becomes SQL under EF Core.
LINQ LINQ Tutorial · LINQ
Short answer: var merged = list1.Union(list2); var merged = list1.Union(list2); var merged = list1.Union(list2); var merged = list1.Union(list2); var merged = list1.Union(list2); var merged = list1.Union(list2); var merged = list1.Union(list2); var merged = list1.Union(list2);
var merged = list1.Union(list2); var merged = list1.Union(list2); var merged = list1.Union(list2); var merged = list1.Union(list2); var merged = list1.Union(list2); var merged = list1.Union(list2); var merged = list1.Union(list2); var merged = list1.Union(list2);
ShopNest uses LINQ to query orders: filter by date, project to a summary DTO, and order by total—readable C# that becomes SQL under EF Core.
LINQ LINQ Tutorial · LINQ
Short answer: var evens = employees.Where(e => e.Id % 2 == 0); var evens = employees.Where(e => e.Id % 2 == 0); var evens = employees.Where(e => e.Id % 2 == 0); var evens = employees.Where(e => e.Id % 2 == 0);
ShopNest maps entities to DTOs with .Select(o => new OrderSummaryDto { Id = o.Id, Total = o.Total }) so the API does not leak internal fields.
LINQ LINQ Tutorial · LINQ
Short answer: var alphaGroup = employees .GroupBy(e => e.Name[0]); var alphaGroup = employees .GroupBy(e => e.Name[0]); var alphaGroup = employees .GroupBy(e => e.Name[0]); var alphaGroup = employees .GroupBy(e => e.Name[0]); var alphaGroup = employees .GroupBy(e => e.Name[0]); var alphaGroup = employees .GroupBy(e => e.Name[0]); var alphaGroup = employees .GroupBy(e => e.Name[0]); var alphaGroup = employees .GroupBy(e =>…
var alphaGroup = employees .GroupBy(e => e.Name[0]); var alphaGroup = employees .GroupBy(e => e.Name[0]); var alphaGroup = employees .GroupBy(e => e.Name[0]); var alphaGroup = employees .GroupBy(e => e.Name[0]); var alphaGroup = employees .GroupBy(e => e.Name[0]); var alphaGroup = employees .GroupBy(e => e.Name[0]); var alphaGroup = employees .GroupBy(e => e.Name[0]); var alphaGroup = employees .GroupBy(e => e.Name[0]);
A sales report joins orders and customers, then GroupBy(c => c.City) to show revenue per city.