{TOC}
| Namespace: | System.Linq |
| Assembly: | System.Core.dll |
| Extends: | IEnumerable<T> |
Back to
Standard Query Operator IndexEditIntroduction
The Where operator filters a sequence based on a predicate.
EditMethod Signatures
// 1 - Only return elements that pass the filter predicate.
public static IEnumerable<TSource> Where<TSource>(
this IEnumerable<TSource> source,
Func<TSource, bool> predicate)
// 2 - Only return elements that pass a filter predicate.
// The current element's index position is available for use in the predicate function.
public static IEnumerable<TSource> Where<TSource>(
this IEnumerable<TSource> source,
Func<TSource, int, bool> predicate)EditExceptions
Throws an ArgumentNullException if
source or
predicate is null.
EditPseudo-code
Overload 1
If
source is null, throw an ArgumentNullException.
If
predicate is null, throw an ArgumentNullException.
Iterate the
source sequence.
If predicate(current element) returns true.
Return the current element. Resume execution from this point when the next element is requested.
Overload 2
If
source is null, throw an ArgumentNullException.
If
predicate is null, throw an ArgumentNullException.
Initialize a counter to zero.
Iterate the
source sequence.
If predicate(current element, counter) returns true.
Return the current element. Resume execution from this point when the next element is requested.
Increment counter by one.
EditLoop Count
This operator implements the standard
deferred execution iterator pattern. This means, no looping will occur until the result is iterated over.
EditCode Samples
VB Simple Restriction
Dim num() = {5,1, 3, 9, 8, 6, 7, 2}
Dim numLess = From n In num _
Where n < 5 _
Select n
Console.WriteLine("Numbers < 5:")
For Each x In numLess
Console.WriteLine(x)
Next
Numbers < 5:
1
3
2
Alternate syntax,
Dim num() = {5,1, 3, 9, 8, 6, 7, 2}
Dim numLess = From n In num.Where(Function(w) w < 5).Select(Function(s) s)
Console.WriteLine("Numbers < 5:")
For Each x In numLess
Console.WriteLine(x)
Next
The following query finds hidden files in a given directory,
Dim fileList = From f In New DirectoryInfo("C:\").GetFiles() _
Where (f.Attributes And FileAttributes.Hidden) = FileAttributes.Hidden _
Select f _
Order By f.Name
Console.WriteLine("Hidden Files:")
For Each f In fileList
Console.WriteLine(f.Name)
NextResults may vary.
Hidden Files:
bootmgr