LINQ to Objects in Examples
Base Syntax
var integerList = new List<int> {1,2,3,4,5,6,7,8,9,10};
IEnumerable<int> evenNumbers = integerList.
Where(x => x % 2 == 0).
Select(x => x);
foreach(var evenNumber in evenNumbers)
{
Console.WriteLine(evenNumber);
}
or
IEnumerable<int> evenNumbers =
from x
in integerList
where x % 2 == 0
select x;
Skip, Take, ToArray, ToList
ToArray
IEnumerable<int> evenNumbers = integerList.
Where(x => x % 2 == 0).
Select(x => x).
ToArray();
ToList
IEnumerable<int> evenNumbers = integerList.
Where(x => x % 2 == 0).
Select(x => x).
ToList();
Skip and Take
IEnumerable<int> evenNumbers = integerList.
Where(x => x % 2 == 0).
Select(x => x).
Skip(1).
Take(3);
Select Many
public static IEnumerable<Point> GetNeighbours(Point p)
{
int[] d = { -1, 0, 1 };
return d.SelectMany(w => d.SelectMany(z => new Point[] { new Point(p.X + w, p.Y + z) })).Where( x => !x.Equals(p));
}
OrderBy and Distinct
IOrderedEnumerable<T> OrderBy<T>(this IEnumerable<T> items, Func<T, K> keySelector)
IOrderedEnumerable<T> OrderByDescending<T>(this IEnumerable<T> items, Func<T, K> keySelector)
IOrderedEnumerable<T> ThenBy<T>(this IOrderedEnumerable<T> items, Func<T, K> keySelector)
IOrderedEnumerable<T> ThenByDescending<T>(this IOrderedEnumerable<T> items, Func<T, K> keySelector)
OrderBy, OrderByDescending
var evenNumbers = integerList.Where(x => x % 2 == 0).
OrderByDescending(x => x);
ThenBy
var names = new[] { "Pavel", "Alexander", "Irina" };
var sorted = names
.OrderByDescending(name => name.Length)
.
ThenBy(n => n);
Distinct - remove dublicates
var numbers = new[] { 1, 2, 3, 3, 1, 1, };
var uniqueNumbers = numbers.
Distinct();
Aggregation
- Min
- Max
- Average
- Count
var min = integerList.Min();
var max = integerList.Max();
var average = integerList.Average();
var count = integerList.Count;
- All
- Any
var isAllPositive = integerList.All(x => x > 0);
var isContainsNegative = integerList.Any(x => x < 0);
Grouping
IEnumerable<IGrouping<TKey, TItem>>
GroupBy(Func<TItem, TKey> keySelector)
IGrouping<int, int>[] grouppedIntegers = integerList.GroupBy(x => x % 2).OrderBy( x=> x.Key).ToArray();
foreach (var groupValue in grouppedIntegers)
{
foreach(var itemValue in groupValue)
{
Console.WriteLine($"{groupValue.Key}:{itemValue}");
}
}
or
var grouppedIntegers = integerList.GroupBy(x => x % 2).OrderBy(x => x.Key).SelectMany(x => x);
foreach (var groupValue in grouppedIntegers)
{
Console.WriteLine($"{groupValue}");
}
See also
https://ulearn.me/course/linq/
Создано: 01/11/2021 13:59, Изменено: 02/11/2021 11:03, Просмотров: 49
Назад