into (C# Reference)


Updated: July 20, 2015

System_CAPS_ICON_note.jpg Note

For the latest documentation on C#, visit the C# Guide on

The into contextual keyword can be used to create a temporary identifier to store the results of a group, join or select clause into a new identifier. This identifier can itself be a generator for additional query commands. When used in a group or select clause, the use of the new identifier is sometimes referred to as a continuation.

The following example shows the use of the into keyword to enable a temporary identifier fruitGroup which has an inferred type of IGrouping. By using the identifier, you can invoke the Count<TSource> method on each group and select only those groups that contain two or more words.

    class IntoSample1
        static void Main()
            // Create a data source.
            string[] words = { "apples", "blueberries", "oranges", "bananas", "apricots"};

            // Create the query.
            var wordGroups1 =
                from w in words
                group w by w[0] into fruitGroup
                where fruitGroup.Count() >= 2
                select new { FirstLetter = fruitGroup.Key, Words = fruitGroup.Count() };

            // Execute the query. Note that we only iterate over the groups, 
            // not the items in each group
            foreach (var item in wordGroups1)
                Console.WriteLine(" {0} has {1} elements.", item.FirstLetter, item.Words);

            // Keep the console window open in debug mode
            Console.WriteLine("Press any key to exit.");
    /* Output:
       a has 2 elements.
       b has 2 elements.

The use of into in a group clause is only necessary when you want to perform additional query operations on each group. For more information, see group clause.

For an example of the use of into in a join clause, see join clause.

Query Keywords (LINQ)
LINQ Query Expressions
group clause