0

データベースに 2 つのテーブルがあります。

街:

userid, buildingid

建物:

buildingid, buildingname

私が欲しいのは、次のように GridView を設定することです:

グリッドビュー

しかし、建物を複数回表示したくありません。これが私のコードです:

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();

動作する新しいコード:

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();
4

3 に答える 3

0
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()}

私はこれがそれをするべきだと思います。テストしていないのでエラーになるかもしれませんが、こんな感じになります。

于 2012-04-27T08:58:06.850 に答える
0

このようなことはありませんか?

Users
    .Select(User => new {User, User.Building})
    .GroupBy(x => x.Building)
    .Select(g=> new {Building = g.Key, Count = g.Count()})
于 2012-04-27T08:55:50.370 に答える
-2

Linq to SQLでの私の経験によると、式が複雑になっている場合は、ストアドプロシージャを記述し、LinqtoSQLで呼び出す方が適切です。このようにして、保守性とアップグレード性が向上します。

純粋なSQLのオプションではなく、「LinqutoSQL」をSQLデータセットのハードタイプされたオブジェクト表現を取得するためのツールと見なしています。これ以上何もない。

お役に立てば幸いです。

于 2012-04-27T09:12:34.320 に答える