Linq select to new object

c#, group-by, linq

Solution

Read : 101 LINQ Samples in that LINQ - Grouping Operators from Microsoft MSDN site

var x = from t in types  group t by t.Type
         into grp    
         select new { type = grp.key, count = grp.Count() };

For a single object, make use of `StringBuilder` and append it, or convert this in the form of dictionary:

    // fordictionary 
  var x = (from t in types  group t by t.Type
     into grp    
     select new { type = grp.key, count = grp.Count() })
   .ToDictionary( t => t.type, t => t.count); 

   //for stringbuilder not sure for this 
  var x = from t in types  group t by t.Type
         into grp    
         select new { type = grp.key, count = grp.Count() };
  StringBuilder MyStringBuilder = new StringBuilder();

  foreach (var res in x)
  {
       //: is separator between to object
       MyStringBuilder.Append(result.Type +" , "+ result.Count + " : ");
  }
  Console.WriteLine(MyStringBuilder.ToString());   

Problem

I have a linq query ``` var x = (from t in types select t).GroupBy(g =>g.Type) ``` which groups objects by their type, as a result I want to have single new object containing all of the grouped objects and their count. Something like this: ``` type1, 30 type2, 43 type3, 72 ``` to be more clear: grouping results should be in one object not an object per item type

Original source