Master technical and career interviews with structured answers—short definition, real examples, pitfalls, and how to answer in 60–90 seconds.
Short answer: Get bottom 2 lowest-paid employees var bottom2 = employees .OrderBy(e => e.Salary) .Take(2); Get bottom 2 lowest-paid employees var bottom2 = employees .OrderBy(e => e.Salary) .Take(2); Get bottom 2 l…
Short answer: var namesStartingA = employees .Select(e => e.Name); var namesStartingA = employees .Select(e => e.Name); var namesStartingA = employees .Select(e => e.Name); var namesStartingA = employees .Select…
Short answer: Get names of employees whose names start with 'A' var namesStartingA = employees .Where(e => e.Name.StartsWith("A")) .Select(e => e.Name); Follow : Get names of employees whose names start w…
Short answer: Get total salary by department var totalByDept = employees .GroupBy(e => e.Department) .Select(g => new { Department = g.Key, Total = g.Sum(e => e.Salary) }); Get total salary by department var tot…
Short answer: var flat = numbers.SelectMany(n => n); var flat = numbers.SelectMany(n => n); var flat = numbers.SelectMany(n => n); var flat = numbers.SelectMany(n => n); var flat = numbers.SelectMany(n =>…
Short answer: Flatten list of lists using SelectMany List<List<int>> numbers = new() { new() { 1, 2 }, new() { 3, 4 }, new() { 5 } var flat = numbers.SelectMany(n => n); Flatten list of lists using SelectM…
Short answer: Use Distinct() on names var distinctNames = employees .Select(e => e.Name) .Distinct(); Use Distinct() on names var distinctNames = employees .Select(e => e.Name) .Distinct(); Use Distinct() on names…
Short answer: double[] salaryArray = employees Real-world example (ShopNest) ShopNest maps entities to DTOs with .Select(o => new OrderSummaryDto { Id = o.Id, Total = o.Total }) so the API does not leak internal field…
Short answer: Convert list of salaries to array double[] salaryArray = employees .Select(e => e.Salary) .ToArray(); Convert list of salaries to array double[] salaryArray = employees .Select(e => e.Salary) .ToArray…
Short answer: var duplicateDepts = employees .Select(g => g.Key); var duplicateDepts = employees .Select(g => g.Key); var duplicateDepts = employees .Select(g => g.Key); var duplicateDepts = employees .Select(g…
Short answer: Find duplicate departments var duplicateDepts = employees Follow : .GroupBy(e => e.Department) .Where(g => g.Count() > 1) .Select(g => g.Key); Find duplicate departments var duplicateDepts = emp…
Short answer: Compare LINQ to SQL vs LINQ to Objects? Answer: LINQ to Objects runs in memory on collections (List<T>, arrays). LINQ to SQL/EF builds expression trees and translates to SQL queries. Real-world exampl…
Short answer: var allDepts = from d in departments into empGroup var allDepts = from d in departments into empGroup var allDepts = from d in departments into empGroup var allDepts = from d in departments into empGroup va…
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…
LINQ LINQ Tutorial · LINQ
Short answer: Get bottom 2 lowest-paid employees var bottom2 = employees .OrderBy(e => e.Salary) .Take(2); Get bottom 2 lowest-paid employees var bottom2 = employees .OrderBy(e => e.Salary) .Take(2); Get bottom 2 lowest-paid employees var bottom2 = employees .OrderBy(e => e.Salary) .Take(2); Get bottom 2 lowest-paid employees var bottom2 = employees .OrderBy(e =>…
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 namesStartingA = employees .Select(e => e.Name); var namesStartingA = employees .Select(e => e.Name); var namesStartingA = employees .Select(e => e.Name); var namesStartingA = employees .Select(e => e.Name); var namesStartingA = employees .Select(e => e.Name); var namesStartingA = employees .Select(e => e.Name); var namesStartingA = employees .Select(e => e.Name); var namesStartingA = employees .Select(e =>…
var namesStartingA = employees .Select(e => e.Name); var namesStartingA = employees .Select(e => e.Name); var namesStartingA = employees .Select(e => e.Name); var namesStartingA = employees .Select(e => e.Name); var namesStartingA = employees .Select(e => e.Name); var namesStartingA = employees .Select(e => e.Name); var namesStartingA = employees .Select(e => e.Name); var namesStartingA = employees .Select(e => e.Name);
ShopNest filters active products with products.Where(p => p.IsActive && p.Stock > 0) before showing the catalog.
LINQ LINQ Tutorial · LINQ
Short answer: Get names of employees whose names start with 'A' var namesStartingA = employees .Where(e => e.Name.StartsWith("A")) .Select(e => e.Name); Follow : Get names of employees whose names start with 'A' var namesStartingA = employees .Where(e => e.Name.StartsWith("A")) .Select(e => e.Name); Follow : Get names of employees whose names start with 'A' var… namesStartingA = employees .Where(e => e.Name.StartsWith("A"))…
Select(e => e.Name); Follow : Get names of employees whose names start with 'A' var namesStartingA = employees .Where(e => e.Name.StartsWith("A")) .Select(e => e.Name); Follow :
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: Get total salary by department var totalByDept = employees .GroupBy(e => e.Department) .Select(g => new { Department = g.Key, Total = g.Sum(e => e.Salary) }); Get total salary by department var totalByDept = employees .GroupBy(e => e.Department) .Select(g => new { Department = g.Key, Total = g.Sum(e => e.Salary) }); Real-world… example (ShopNest) 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. Get total salary by department var totalByDept = employees .GroupBy(e => e.Department) .Select(g => new { Department = g.Key, Total = g.Sum(e => e.Salary) }); Get total salary by department var totalByDept = employees .GroupBy(e => e.Department) .Select(g => new { Department = g.Key, Total = g.Sum(e => e.Salary) }); Real-world… example (ShopNest) 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 flat = numbers.SelectMany(n => n); var flat = numbers.SelectMany(n => n); var flat = numbers.SelectMany(n => n); var flat = numbers.SelectMany(n => n); var flat = numbers.SelectMany(n => n); var flat = numbers.SelectMany(n => n); var flat = numbers.SelectMany(n => n); var flat = numbers.SelectMany(n => n);
var flat = numbers.SelectMany(n => n); var flat = numbers.SelectMany(n => n); var flat = numbers.SelectMany(n => n); var flat = numbers.SelectMany(n => n); var flat = numbers.SelectMany(n => n); var flat = numbers.SelectMany(n => n); var flat = numbers.SelectMany(n => n); var flat = numbers.SelectMany(n => n);
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: Flatten list of lists using SelectMany List<List<int>> numbers = new() { new() { 1, 2 }, new() { 3, 4 }, new() { 5 } var flat = numbers.SelectMany(n => n); Flatten list of lists using SelectMany List<List<int>> numbers = new() { new() { 1, 2 }, new() { 3, 4 }, new() { 5 } var flat = numbers.SelectMany(n => n); Real-world example… (ShopNest) ShopNest maps…… entities to DTOs with .Select(o => new OrderSummaryDto { Id…
= o.Id, Total = o.Total }) so the API does not leak internal fields. Flatten list of lists using SelectMany List<List<int>> numbers = new() { new() { 1, 2 }, new() { 3, 4 }, new() { 5 } var flat = numbers.SelectMany(n => n); Flatten list of lists using SelectMany List<List<int>> numbers = new() { new() { 1, 2 }, new() { 3, 4 }, new() { 5 } var flat = numbers.SelectMany(n => n); Real-world example… (ShopNest) 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: Use Distinct() on names var distinctNames = employees .Select(e => e.Name) .Distinct(); Use Distinct() on names var distinctNames = employees .Select(e => e.Name) .Distinct(); Use Distinct() on names var distinctNames = employees .Select(e => e.Name) .Distinct(); Use Distinct() on names var distinctNames = employees .Select(e => e.Name) .Distinct();
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: double[] salaryArray = employees
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: Convert list of salaries to array double[] salaryArray = employees .Select(e => e.Salary) .ToArray(); Convert list of salaries to array double[] salaryArray = employees .Select(e => e.Salary) .ToArray(); Convert list of salaries to array double[] salaryArray = employees .Select(e => e.Salary) .ToArray(); Convert list of salaries to array double[]… salaryArray = employees .Select(e => e.Salary) .ToArray();
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 duplicateDepts = employees .Select(g => g.Key); var duplicateDepts = employees .Select(g => g.Key); var duplicateDepts = employees .Select(g => g.Key); var duplicateDepts = employees .Select(g => g.Key); var duplicateDepts = employees .Select(g => g.Key); var duplicateDepts = employees .Select(g => g.Key); var duplicateDepts = employees .Select(g => g.Key); var duplicateDepts = employees .Select(g => g.Key);
var duplicateDepts = employees .Select(g => g.Key); var duplicateDepts = employees .Select(g => g.Key); var duplicateDepts = employees .Select(g => g.Key); var duplicateDepts = employees .Select(g => g.Key); var duplicateDepts = employees .Select(g => g.Key); var duplicateDepts = employees .Select(g => g.Key); var duplicateDepts = employees .Select(g => g.Key); var duplicateDepts = 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 departments var duplicateDepts = employees Follow : .GroupBy(e => e.Department) .Where(g => g.Count() > 1) .Select(g => g.Key); Find duplicate departments var duplicateDepts = employees Follow : .GroupBy(e => e.Department) .Where(g => g.Count() > 1) .Select(g => g.Key); Find duplicate departments var duplicateDepts = employees Follow :… GroupBy(e => e.Department) .Where(g => g.Count() > 1) .Select(g…
=> g.Key); Find duplicate departments var duplicateDepts = employees Follow : .GroupBy(e => e.Department) .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: Compare LINQ to SQL vs LINQ to Objects? Answer: LINQ to Objects runs in memory on collections (List<T>, arrays). LINQ to SQL/EF builds expression trees and translates to SQL queries.
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 allDepts = from d in departments into empGroup var allDepts = from d in departments into empGroup var allDepts = from d in departments into empGroup var allDepts = from d in departments into empGroup var allDepts = from d in departments into empGroup var allDepts = from d in departments into empGroup var allDepts = from d in departments into empGroup var allDepts = from d in departments into empGroup
var allDepts = from d in departments into empGroup var allDepts = from d in departments into empGroup var allDepts = from d in departments into empGroup var allDepts = from d in departments into empGroup var allDepts = from d in departments into empGroup var allDepts = from d in departments into empGroup var allDepts = from d in departments into empGroup var allDepts = from d in departments into empGroup
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: 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.