Q:

Linq to SQL join and group

I have two tables in my database:
Town:
userid, buildingid

Building:
buildingid, buildingname

What i want is to populate a GridView like this:

But I don't want the buildings to be shown more than once. Here is my code:
var buildings = dc.Towns
            .Where(t => t.userid == userid)
            .GroupJoin(dc.Buildings,
                       t => t.buildingid,
                       b => b.buildingid,
                       (Towns, Buildings) => new
                                                {
                                                    BuildningName = Buildings.First().buildingname,
                                                    Count = Towns.Building.Towns.Count()
                                                });
        gvBuildings.DataSource = buildings.ToList();
        gvBuildings.DataBind();

New code which works:
var buildings = (from t in dc.Towns
                         where t.userid == userid
                         join b in dc.Buildings
                             on t.buildingid equals b.buildingid
                             into j1
                         from j2 in j1.DefaultIfEmpty()
                         group j2 by j2.buildingname
                         into grouped
                         select new
                                    {
                                        buildingname = grouped.Key,
                                        Count = grouped.Count()
                                    });
        gvBuildings.DataSource = buildings.ToList();
        gvBuildings.DataBind();

A:

var buildings = from t in dc.Towns
join b in dc.Buildings on t.buildingid equals b.buildingid into j1
from j2 in j1.DefaultIfEmpty()
group j2 by b.buildingname into grouped
select new { buildingname = grouped.key, Count = grouped.Count()}

I think this should do it. I have not tested it so it might give error but it will be something like this.

