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
Назад