C# Linq到SQL连接两个表并填充GridView
我的数据库中有两个表,Building和Town。它们看起来像这样: 建筑:C# Linq到SQL连接两个表并填充GridView,c#,asp.net,linq-to-sql,gridview,join,C#,Asp.net,Linq To Sql,Gridview,Join,我的数据库中有两个表,Building和Town。它们看起来像这样: 建筑: buildingid buildingname 城镇: 在城里,用户拥有的每栋建筑都有一个入口 我想要的是使用给定的用户ID为用户填充GridView。此网格视图应包括建筑物名称和建筑物数量。 建筑。我试过这个: var buildings = (from Town in dc.Towns join Building in dc.Buildings
buildingid
buildingname
城镇:
在城里,用户拥有的每栋建筑都有一个入口
我想要的是使用给定的用户ID为用户填充GridView。此网格视图应包括建筑物名称和建筑物数量。
建筑。我试过这个:
var buildings = (from Town in dc.Towns
join Building in dc.Buildings
on Town.buildingid equals Building.buildingid
select Building.buildingname);
gvBuildings.DataSource = buildings;
gvBuildings.DataBind();
但我不知道如何得到每栋楼的数字
我在这方面已经做了一段时间了,你的几个答案都很有用。我使用了以下代码:
var buildings = dc.Towns
.Where(t => t.userid == userid)
.GroupJoin(dc.Buildings,
t => t.buildingid,
b => b.buildingid,
(Town, Buildings) => new
{
BuildningName = Buildings.First().buildingname,
Count = Buildings.Count()
});
gvBuildings.DataSource = buildings.ToList();
gvBuildings.DataBind();
当我运行此代码时,我的GridView最终显示如下:
我需要将建筑物分组显示,按建筑物名称分组。我已经尝试了所有的建议,但都无法付诸实施。检查
然后再试试吹代码可能对你有用
var buildings =
(from j in dc.Town
join i in dc.Buildings
on j.buildingId equals i.buildingId
where j.Userid = varUSerid
group new {i, j}
by new
{ i.BuildingID }
into
g
select new {
BuildingName = g.First<k=>k.BuildingName)
, count = g.Count() } ).ToList();
gvBuildings.DataSource = buildings;
gvBuildings.DataBind();
var建筑=
(来自华盛顿特区的j.Town)
加入我的特区大厦
关于j.buildingId等于i.buildingId
其中j.Userid=varUSerid
群新{i,j}
由新
{i.BuildingID}
进入
G
选择新{
BuildingName=g.Firstk.BuildingName)
,count=g.count()});
gvBuildings.DataSource=建筑物;
gvBuildings.DataBind();
检查
然后再试试吹代码可能对你有用
var buildings =
(from j in dc.Town
join i in dc.Buildings
on j.buildingId equals i.buildingId
where j.Userid = varUSerid
group new {i, j}
by new
{ i.BuildingID }
into
g
select new {
BuildingName = g.First<k=>k.BuildingName)
, count = g.Count() } ).ToList();
gvBuildings.DataSource = buildings;
gvBuildings.DataBind();
var建筑=
(来自华盛顿特区的j.Town)
加入我的特区大厦
关于j.buildingId等于i.buildingId
其中j.Userid=varUSerid
群新{i,j}
由新
{i.BuildingID}
进入
G
选择新{
BuildingName=g.Firstk.BuildingName)
,count=g.count()});
gvBuildings.DataSource=建筑物;
gvBuildings.DataBind();
试试这个。。它应该有用。。我也有类似的要求
试试这个。。它应该有用。。我也有类似的要求 尝试分组:
var buildings = dc.Towns
.Where(t => t.UserId == userId)
.GroupJoin(dc.Buildings,
t => t.BuildingId,
b => b.BuildingId,
(town, buildings) => new
{
BuildingName = buildings.First().BuildingName,
Count = buildings.Count
});
请记住,当绑定到控件时,必须提供类型(或实现)的集合IList
。这可以通过调用buildings
集合上的ToList()
来实现:
gvBuildings.DataSource = buildings.ToList();
gvBuildings.DataBind();
尝试分组:
var buildings = dc.Towns
.Where(t => t.UserId == userId)
.GroupJoin(dc.Buildings,
t => t.BuildingId,
b => b.BuildingId,
(town, buildings) => new
{
BuildingName = buildings.First().BuildingName,
Count = buildings.Count
});
请记住,当绑定到控件时,必须提供类型(或实现)的集合IList
。这可以通过调用buildings
集合上的ToList()
来实现:
gvBuildings.DataSource = buildings.ToList();
gvBuildings.DataBind();
注意,您应该选择单个数据,并且它可以工作
注意,你应该选择单独的数据,它就可以工作。每个建筑的编号是建筑的id还是每个建筑的计数?@PranayRana要获得编号,我需要计算城镇中的每个条目,其中userid==parameterUserId和Buildingid==parameterBuildingidit似乎你只需要添加一个where条件,因为你已经在应用inne join on building id…试试我更新的解决方案我的答案可能对你有用…一些解决方案可以。但它不会按建筑名称对结果进行分组。我填充了GridView,但显示如下:兵营1,兵营1,兵营1,马厩1,archery 1.number of each buildin是建筑物的id还是计数?@PranayRana要获得数字,我需要计算城镇中的每个条目,其中userid==parameterUserId和Buildingid==parameterBuildingidit似乎您只需要添加一个where条件,因为您已经在建筑物id上应用inne连接…尝试解决方案我更新了我的答案,可能对你们有用……有几种解决方案可以。但它不会按建筑名称对结果进行分组。我填充了GridView,但其显示方式如下:营房1、营房1、营房1、马厩1、射箭1。此行:BuildingCount=Building.Count()不起作用。如果我只知道在何处使用Count()语句,这似乎就行了。如果需要按BuildingId进行分组,请检查修改后的查询。Town.UserID==parameteruderId不编译的行。它告诉我:无法访问静态“上下文”中的非静态属性“userid”,请取出该行并运行代码。。它是否将结果绑定到datagridDeleted该行,但在select STATION:DISQUICE调用中仍然存在错误,而且Building.buildingname与上面的错误相同..此行:BuildingCount=Building.Count()不起作用。如果我只知道在何处使用Count()语句,这似乎就行了。如果需要按BuildingId进行分组,请检查修改后的查询。Town.UserID==parameteruderId不编译的行。它告诉我:无法访问静态“上下文”中的非静态属性“userid”,请取出该行并运行代码。。它是否将结果绑定到该行的datagridDeleted,但在select STATTION:DISQUICE调用中仍然存在错误,而且Building.buildingname与上面的错误相同。这不会将结果分组在一起。此查询的结果显示在已编辑的问题中。@Twistar,在这种情况下,请使用简单的
Join
,后跟GroupBy
。这不会将结果分组在一起。此查询的结果显示在已编辑的问题中。@Twistar,在这种情况下,请使用简单的Join
,后跟GroupBy
。