Conversion Operators
To ArrayThis sample generates an array of double values by first using a query expression with orderby to create a sorted sequence of doubles, then ToArray to generate an array from the sequence. public void Linq54() { double[] doubles = { 1.7, 2.3, 1.9, 4.1, 2.9 }; var sortedDoubles = from d in doubles orderby d descending select d; var doublesArray = sortedDoubles.ToArray();
Console.WriteLine("Every other double from highest to lowest:"); for (int d = 0; d < doublesArray.Length; d += 2) { Console.WriteLine(doublesArray[d]); } }
Result Every other double from highest to lowest: 4.1 2.3 1.7
To ListThis sample generates an array of string values by first using a query expression with orderby to create a sorted sequence of strings from a string array, then toList to generate a List from the sequence. public void Linq55() { string[] words = { "cherry", "apple", "blueberry" }; var sortedWords = from w in words orderby w select w; var wordList = sortedWords.ToList(); Console.WriteLine("The sorted word list:"); foreach (var w in wordList) { Console.WriteLine(w); } }
Result The sorted word list: apple blueberry cherry
To DictionaryThis sample uses anonymous types to create a data structure of people and their scores. It then uses ToDictionary to generate a dictionary from the sequence and its key expression. public void Linq56() { var scoreRecords = new [] { new {Name = "Alice", Score = 50}, new {Name = "Bob" , Score = 40}, new {Name = "Cathy", Score = 45} }; var scoreRecordsDict = scoreRecords.ToDictionary(sr => sr.Name); Console.WriteLine("Bob's score: {0}", scoreRecordsDict["Bob"]); }
Result Bob's score: {Name=Bob, Score=40}
OfTypeThis sample prints all of the elements of an array that are of type double. The sample uses OfType to test the element's type. public void Linq57() { object[] numbers = { null, 1.0, "two", 3, 4.0f, 5, "six", 7.0 }; var doubles = numbers.OfType<double>(); Console.WriteLine("Numbers stored as doubles:"); foreach (var d in doubles) { Console.WriteLine(d); } }
Result Numbers stored as doubles: 1 7 |