Aggregation
Aggregate, Average, Count, LongCount, Max, Min, Sum
Conversion
AsEnumerable, Cast, OfType, ToArray, ToDictionary, ToList, ToLookup
Element
ElementAt, ElementAtOrDefault, First, FirstOrDefault, Last, LastOrDefault, Single, SingleOrDefault
ElementAt
ElementAtOrDefault
First (simple)
First (conditional)
FirstOrDefault
Last
LastOrDefault (simple)
LastOrDefault (conditional)
Single
SingleOrDefault
Generation
DefaultIfEmpty, Empty, Range, Repeat
Grouping
GroupBy
Join
GroupJoin, Join
Ordering
OrderBy, OrderByDescending, Reverse, ThenBy, ThenByDescending
OrderBy (simple - numbers)
OrderBy (simple - dates)
OrderBy (simple - objects)
OrderByDescending
Reverse
ThenBy
ThenByDescending
Other
Concat, SequenceEqual, Zip
Partitioning
Skip, SkipWhile, Take, TakeWhile
Projection
Select, SelectMany
Quantifiers
All, Any, Contains
Restriction
Where
Set
Distinct, Except, Intersect, Union
Close
TakeWhile: Takes elements in a collection while specified condition is met, starting from first element.
TakeWhile: Takes elements in a collection while specified condition is met, starting from first element. |
TakeWhile: Takes elements in a collection while specified condition is met, starting from first element. |
This Query Expression sample takes numbers from array, while number is less than 5. |
This Query Expression sample takes numbers from array, while number is less than 5. |
// A Query Expression cannot be constructed for TakeWhile() in C#. // Consider using a Lambda Expression instead.
' A Query Expression cannot be constructed for TakeWhile() in VB.NET. ' Consider using a Lambda Expression instead.
let Sample_TakeWhile_Linq() = let numbers = [|1; 2; 3; 4; 5; 6; 7; 8; 9; 10|]; let result = query { for n in numbers do takeWhile (n < 5) } Debug.WriteLine("Takes numbers one by one, and stops when condition is no longer met:"); for number in result do Debug.WriteLine(sprintf "%d" number)Output:
Takes numbers one by one, and stops when condition is no longer met: 1 2 3 4
static void Sample_TakeWhile_Lambda() { int[] numbers = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 }; var result = numbers.TakeWhile(n => n < 5); Debug.WriteLine("Takes numbers one by one, and stops when condition is no longer met:"); foreach (int number in result) Debug.WriteLine(number); }Output:
Takes numbers one by one, and stops when condition is no longer met: 1 2 3 4
Private Shared Sub Sample_TakeWhile_Lambda() Dim numbers As Integer() = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10} Dim result = numbers.TakeWhile(Function(n) n < 5) Debug.WriteLine("Takes numbers one by one, and stops when condition is no longer met:") For Each number As Integer In result Debug.WriteLine(number) Next End SubOutput:
Takes numbers one by one, and stops when condition is no longer met: 1 2 3 4
let Sample_TakeWhile_Lambda() = let numbers = [|1; 2; 3; 4; 5; 6; 7; 8; 9; 10|]; let result = numbers.TakeWhile (fun n -> n < 5) Debug.WriteLine("Takes numbers one by one, and stops when condition is no longer met:"); for number in result do Debug.WriteLine(sprintf "%d" number)Output:
Takes numbers one by one, and stops when condition is no longer met: 1 2 3 4