LINQ helps you easily find, filter, or sort data inside lists of your own objects, like people or products.
You have a list of students and want to find those with grades above 90.
You want to sort a list of books by their publication year.
You need to filter employees who work in a specific department.
You want to select only the names from a list of customer objects.
Syntax
C Sharp (C#)
var result = from item in collection
where condition
select item;
collection is your list of custom objects.
condition is how you filter the objects.
Examples
Selects all people who are 18 or older.
C Sharp (C#)
var adults = from person in people
where person.Age >= 18
select person;
Selects only the names from the list of people.
C Sharp (C#)
var names = from person in people
select person.Name;
Sorts books by their publication year.
C Sharp (C#)
var sortedBooks = from book in books
orderby book.Year
select book;
Sample Program
This program creates a list of people, then uses LINQ to find all who are 18 or older. It prints their names.
C Sharp (C#)
using System;
using System.Collections.Generic;
using System.Linq;
publicclass Person
{
public string Name { get; set; }
publicint Age { get; set; }
}
class Program
{
staticvoid Main()
{
List<Person> people = newList<Person>
{
new Person { Name = "Alice", Age = 30 },
new Person { Name = "Bob", Age = 17 },
new Person { Name = "Charlie", Age = 25 }
};
var adults = from person in people
where person.Age >= 18
select person.Name;
foreach (var name in adults)
{
Console.WriteLine(name);
}
}
}
OutputSuccess
Important Notes
You can use LINQ with any list of your own objects.
LINQ queries are easy to read and write, like asking questions about your data.
Remember to include using System.Linq; to use LINQ features.
Summary
LINQ lets you filter, sort, and select data from lists of custom objects easily.
You write simple queries that look like questions about your data.
It works well with your own classes and properties.
Practice
(1/5)
1. What does LINQ primarily help you do with custom objects in C#?
easy
A. Create new classes automatically
B. Compile code faster
C. Filter, sort, and select data easily
D. Manage memory manually
Solution
Step 1: Understand LINQ's purpose
LINQ is designed to query collections like lists of objects easily.
Step 2: Identify LINQ's main features
It helps filter, sort, and select data without manual loops.
Final Answer:
Filter, sort, and select data easily -> Option C
Quick Check:
LINQ = Filter, sort, select [OK]
Hint: Remember LINQ is for querying data collections [OK]
Common Mistakes:
Thinking LINQ creates classes
Confusing LINQ with compilation
Assuming LINQ manages memory
2. Which of the following is the correct syntax to select all names from a list of Person objects using LINQ?
easy
A. var names = people.Select(p => p.Name());
B. var names = people.Select(p.Name);
C. var names = people.Select(p => p);
D. var names = people.Select(p => p.Name);
Solution
Step 1: Understand Select syntax
Select expects a lambda expression to pick a property, like p => p.Name.
Step 2: Check each option
var names = people.Select(p => p.Name); uses correct lambda syntax. var names = people.Select(p.Name); misses lambda. var names = people.Select(p => p); selects whole object. var names = people.Select(p => p.Name()); wrongly calls Name as method.
Final Answer:
var names = people.Select(p => p.Name); -> Option D
Quick Check:
Select needs lambda with property [OK]
Hint: Use lambda syntax p => p.Property for Select [OK]
Common Mistakes:
Omitting lambda arrow =>
Calling property as method
Selecting whole object instead of property
3. Given the class Person { public string Name; public int Age; } and list people with three persons: Alice(30), Bob(25), and Carol(35), what does this LINQ query return?
var result = people.Where(p => p.Age > 28).Select(p => p.Name).ToList();
medium
A. ["Alice", "Carol"]
B. ["Bob"]
C. ["Alice", "Bob", "Carol"]
D. Empty list
Solution
Step 1: Filter people older than 28
Alice is 30 (yes), Bob is 25 (no), Carol is 35 (yes).
Step 2: Select their names
Names selected are "Alice" and "Carol".
Final Answer:
["Alice", "Carol"] -> Option A
Quick Check:
Age > 28 filters Alice and Carol [OK]
Hint: Filter first, then select property [OK]
Common Mistakes:
Including Bob who is younger
Selecting whole object instead of names
Confusing > with <
4. What is wrong with this LINQ query?
var adults = people.Where(p => p.Age >= 18).Select(p => p.Name); foreach(var name in adults) Console.WriteLine(name);
medium
A. The query is correct and will print all names of adults
B. The lambda expression syntax is incorrect
C. The query is missing ToList() or ToArray(), so it won't compile
D. The Where clause should be after Select
Solution
Step 1: Check LINQ query syntax
Where and Select are used correctly with proper lambda syntax.
Step 2: Check foreach usage
LINQ returns IEnumerable<string>, which foreach can iterate without ToList().
Final Answer:
The query is correct and will print all names of adults -> Option A
Quick Check:
IEnumerable works with foreach directly [OK]
Hint: IEnumerable can be iterated without ToList() [OK]
Common Mistakes:
Thinking ToList() is mandatory before foreach
Misplacing Where and Select order
Incorrect lambda syntax
5. You have a list of Product objects with properties Name (string) and Price (decimal). How do you create a dictionary with product names as keys and prices as values, but only include products costing more than 50 using LINQ?
hard
A. products.ToDictionary(p => p.Name, p => p.Price).Where(p => p.Value > 50);
B. products.Where(p => p.Price > 50).ToDictionary(p => p.Name, p => p.Price);
C. products.Select(p => new {p.Name, p.Price > 50}).ToDictionary(p => p.Name, p => p.Price);
D. products.Where(p => p.Price > 50).Select(p => p.Name).ToDictionary();
Solution
Step 1: Filter products with price > 50
Use Where to keep only products costing more than 50.
Step 2: Convert filtered list to dictionary
Use ToDictionary with key selector p.Name and value selector p.Price.
Final Answer:
products.Where(p => p.Price > 50).ToDictionary(p => p.Name, p => p.Price); -> Option B
Quick Check:
Filter then ToDictionary with key and value selectors [OK]
Hint: Filter first, then use ToDictionary with key and value [OK]
Common Mistakes:
Trying to filter after ToDictionary (invalid)
Selecting anonymous types instead of original objects
Calling ToDictionary without key/value selectors
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.