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
Select: Selects, projects and transforms elements in a collection.
Select: Selects, projects and transforms elements in a collection. |
Select: Selects, projects and transforms elements in a collection. |
This Query Expression sample calculates cos and sin of selected angles, and projects result into anonymously typed elements. |
This Query Expression sample calculates cos and sin of selected angles, and projects result into anonymously typed elements. |
static void Sample_Select_Linq_Anonymous() { double[] angles = { 30D, 60D, 90D }; // Angles in radians var result = from a in angles select new { Angle = a, Cos = Math.Cos(a), Sin = Math.Sin(a) }; Debug.WriteLine("Calculated values:"); foreach (var res in result) Debug.WriteLine(String.Format("Angle {0}: Cos = {1}, Sin = {2}", res.Angle, res.Cos, res.Sin)); }Output:
Calculated values: Angle 30: Cos = 0,154251449887584, Sin = -0,988031624092862 Angle 60: Cos = -0,952412980415156, Sin = -0,304810621102217 Angle 90: Cos = -0,44807361612917, Sin = 0,893996663600558
Private Shared Sub Sample_Select_Linq_Anonymous() Dim angles As Double() = {30.0, 60.0, 90.0} ' Angles in radians Dim result = From a In angles Select New With { _ Key .Angle = a, _ Key .Cos = Math.Cos(a), _ Key .Sin = Math.Sin(a) _ } Debug.WriteLine("Calculated values:") For Each res In result Debug.WriteLine([String].Format("Angle {0}: Cos = {1}, Sin = {2}", res.Angle, res.Cos, res.Sin)) Next End SubOutput:
Calculated values: Angle 30: Cos = 0,154251449887584, Sin = -0,988031624092862 Angle 60: Cos = -0,952412980415156, Sin = -0,304810621102217 Angle 90: Cos = -0,44807361612917, Sin = 0,893996663600558
' A Query Expression cannot be constructed for Select into anonymously typed elements in F#. ' Consider using a Lambda Expression instead.
static void Sample_Select_Lambda_Anonymous() { double[] angles = { 30D, 60D, 90D }; // Angles in radians var result = angles.Select(a => new { Angle = a, Cos = Math.Cos(a), Sin = Math.Sin(a) }); Debug.WriteLine("Calculated values:"); foreach (var res in result) Debug.WriteLine(String.Format("Angle {0}: Cos = {1}, Sin = {2}", res.Angle, res.Cos, res.Sin)); }Output:
Calculated values: Angle 30: Cos = 0,154251449887584, Sin = -0,988031624092862 Angle 60: Cos = -0,952412980415156, Sin = -0,304810621102217 Angle 90: Cos = -0,44807361612917, Sin = 0,893996663600558
Private Shared Sub Sample_Select_Lambda_Anonymous() Dim angles As Double() = {30.0, 60.0, 90.0} ' Angles in radians Dim result = angles.Select(Function(a) New With { _ Key .Angle = a, _ Key .Cos = Math.Cos(a), _ Key .Sin = Math.Sin(a) _ }) Debug.WriteLine("Calculated values:") For Each res In result Debug.WriteLine([String].Format("Angle {0}: Cos = {1}, Sin = {2}", res.Angle, res.Cos, res.Sin)) Next End SubOutput:
Calculated values: Angle 30: Cos = 0,154251449887584, Sin = -0,988031624092862 Angle 60: Cos = -0,952412980415156, Sin = -0,304810621102217 Angle 90: Cos = -0,44807361612917, Sin = 0,893996663600558
let Sample_Select_Lambda_Anonymous() = let angles : double[] = [|30.0; 60.0; 90.0|] let result = angles.Select(fun a -> {Angle = a; Cos = Math.Cos(a); Sin = Math.Sin(a)} ) Debug.WriteLine(sprintf "Calculated values:") for res in result do Debug.WriteLine(sprintf "Angle %f: Cos = %f, Sin = %f" res.Angle res.Cos res.Sin)Output:
Calculated values: Angle 30.000000: Cos = 0.154251, Sin = -0.988032 Angle 60.000000: Cos = -0.952413, Sin = -0.304811 Angle 90.000000: Cos = -0.448074, Sin = 0.893997