Wyrażenia Linq są wykonywane wtedy, kiedy zachodzi potrzeba wykorzystania danych.(Linq querry)
Wybór liczb parzystych z kolekcji
int[] numbers = { 12, 3, 45, 23, 22, 18, 98, 67 };
var evenNums = numbers.Where(number => number % 2 == 0);
Console.WriteLine(string.Join(",", evenNums));
Sortowanie liczb w LINQ C#
int[] numbers = { 12, 3, 45, 23, 22, 18, 98, 67 };
var sortedNums = numbers.OrderBy(number => number);
Console.WriteLine(string.Join(",", sortedNums));
Łączenie wyrażeń LINQ do posortowania liczb parzystych z kolekcji
int[] numbers = { 12, 3, 45, 23, 22, 18, 98, 67 };
var sortedNums = numbers
.Where(number=>number%2 == 0)
.OrderBy(number => number);
Console.WriteLine(string.Join(",", sortedNums));
Wybór krótkich imion z kolekcji
string[] names = { "Jo", "Jen", "Anna", "Roman", "Eli", "Jannet" };
var shortNames = names.Where(name=>name.Length <= 3);
Console.WriteLine(string.Join(",", shortNames));
Wybór imion zaczynających się od litery J
string[] names = { "Jo", "Jen", "Anna", "Roman", "Eli", "Jannet" };
var jNames = names.Where(name=>name.StartsWith('J'));
Console.WriteLine(string.Join(",", jNames));
Any – zwraca true jeśli jakakolwiek liczba z kolekcji będzie większa od 44
int[] numbers = { 12, 3, 45, 23, 22, 18, 41, 36 };
bool isLarger = numbers.Any(x => x > 44);
Console.WriteLine(isLarger);
All – zwraca true jeśli wszystkie elementy kolekcji spełniają warunek
Count – zwraca ilość elementów spełniających warunki
string[] names = { "Jo", "Jen", "Anna", "Roman", "Eli", "Jannet" };
var jNames = names.Count(name => name.StartsWith('J') && name.Length > 3);
Console.WriteLine(jNames);
Contains – zwraca true jeśli element znajduje się w kolekcji
string[] names = { "Jo", "Jen", "Anna", "Roman", "Eli", "Jannet" };
var jNames = names.Contains("Jo");
Console.WriteLine(jNames);
OrderBy – porządkuje kolekcję względem podanego parametru
Car[] cars = {
new("Ford", 280, 6.2),
new("Mazda", 270, 2.5),
new("Honda", 260, 2.4),
new("Fiat", 180, 1.5),
new("Opel", 200, 2.0),
new("Mercedes", 260, 4.2),
new("Bmw", 280, 3.0)
};
var carsOrder = cars.OrderBy(car=>car.Brand);
Console.WriteLine(nameof(cars));
foreach (var car in carsOrder)
{
Console.WriteLine($"{car.Brand} - {car.MaxSpeed}, {car.EngineSize}");
}
public class Car
{
public string Brand { get; set; }
public int MaxSpeed { get; set; }
public double EngineSize { get; set; }
public Car(string brand, int maxSpeed, double engineSize)
{
Brand = brand;
MaxSpeed = maxSpeed;
EngineSize = engineSize;
}
}
Łączenie warunków przez ThenBy:
var carsOrder = cars.OrderBy(car => car.MaxSpeed).ThenBy(car=>car.EngineSize);
OrderByDescending
int[] numbers = { 12, 3, 45, 23, 22, 18, 41, 36 };
var numsDesc = numbers.OrderByDescending(x => x);
Console.WriteLine(string.Join(",", numsDesc));
First and Last
// Pierwsza liczba nieparzysta w kolekcji
int[] numbers = { 12, 6, 45, 23, 22, 18, 41, 36 };
var num = numbers.First(x => x%2 ==1);
Console.WriteLine(num);
Wybór elementów spełniających warunek o podanym w tablicy indeksie Linq
Car[] cars = {
new("Ford", 280, 6.2),
new("Mazda", 270, 2.5),
new("Honda", 260, 2.4),
new("Fiat", 180, 1.5),
new("Opel", 200, 2.0),
new("Mercedes", 260, 4.2),
new("Bmw", 280, 3.0),
new("Hyundai", 250, 1.8),
new("Nissan", 320, 5.6)
};
int[] pickedCars = { 0, 1, 2, 8 };
var carsWhere = cars.Where((car, pick) => car.MaxSpeed>270
&& pickedCars.Contains(pick));
foreach (var car in carsWhere)
{
Console.WriteLine($"{car.Brand} - {car.MaxSpeed}, {car.EngineSize}");
}
public class Car
{
public string Brand { get; set; }
public int MaxSpeed { get; set; }
public double EngineSize { get; set; }
public Car(string brand, int maxSpeed, double engineSize)
{
Brand = brand;
MaxSpeed = maxSpeed;
EngineSize = engineSize;
}
}
Distinct zwraca kolekcję bez duplikatów
int[] numbers = { 12, 3, 45, 3, 12, 23, 22, 18, 41, 36 };
var numsDistinct = numbers.Distinct();
Console.WriteLine(string.Join(",", numsDistinct));
Select
//Zwiększa elementy tablicy x10
int[] numbers = { 12, 3, 45, 23, 22, 18, 41, 36 };
var nums = numbers.Select(num=>num*10);
Console.WriteLine(string.Join(",", nums));
Pobieranie jednego typu danych z obiektu do kolekcji
Car[] cars = {
new("Ford", 280, 6.2),
new("Mazda", 270, 2.5),
new("Honda", 260, 2.4),
new("Fiat", 180, 1.5),
new("Opel", 200, 2.0),
new("Mercedes", 260, 4.2),
new("Bmw", 280, 3.0),
new("Hyundai", 250, 1.8),
new("Nissan", 320, 5.6)
};
var carsSelect = cars.Select(car => car.Brand);
Console.WriteLine(string.Join(",", carsSelect));
public class Car
{
public string Brand { get; set; }
public int MaxSpeed { get; set; }
public double EngineSize { get; set; }
public Car(string brand, int maxSpeed, double engineSize)
{
Brand = brand;
MaxSpeed = maxSpeed;
EngineSize = engineSize;
}
}
Średnia wartość liczb bez null
var heights = new List<Nullable<int>> { 180, null, 177, 168, null, 181 };
var average = heights
.Where(h => h is not null)
.Average();
// lub prosciej bez sprawdzania null poniewaz Average i tak pominie wartosci null
var average = heights
.Average();
Console.WriteLine(average);