Asp.net Linq获取单列数据计数
我有两个关系表。 第一个表是人员详细信息表Asp.net Linq获取单列数据计数,asp.net,asp.net-mvc,linq,Asp.net,Asp.net Mvc,Linq,我有两个关系表。 第一个表是人员详细信息表 PersonID PersonName Sex 1 Anand Male 2 Prabhu Male 3 Durga Female 第二张桌子是一个人旅行的地方 PlaceID Place PersonID 1 a 1 2 b 2 3 c
PersonID PersonName Sex
1 Anand Male
2 Prabhu Male
3 Durga Female
第二张桌子是一个人旅行的地方
PlaceID Place PersonID
1 a 1
2 b 2
3 c 1
4 d 3
5 e 1
6 f 2
我的预期产出是
PersonName PLaceCount
1 3
2 2
3 1
PlaceCount
将是用户旅行地点的计数。模型 我的代码
var data= from t1 in db.Person
join t2 in db.PlaceTraveled on t1.PersonID equals t2.PersonID
select new value { PersonName = t1.PersonName, PLaceCount= t2.Place};
但是我无法计算这个人去过的地方。提前感谢在这种情况下,您需要使用,而不是常规加入,根据: 基于键相等性关联两个序列的元素,并对结果进行分组 与常规联接不同的是,您得到一个项和一组相关项。然后可以在相关集合上应用不同的聚合,包括
Count()
:
如果第二个表中的PlaceId
和PersonId
的组合是唯一的,则上述内容就足够了。如果没有,则可以简单地将其与Distinct
组合,如下所示:
var data= from t1 in db.Person
join t2 in db.PlaceTraveled on t1.PersonID equals t2.PersonID into placeGroup
select new value
{
PersonName = t1.PersonName,
PLaceCount = placeGroup.Select(p => p.PlaceId).Distinct().Count()
};
在这种情况下,您需要使用,而不是使用常规联接,根据: 基于键相等性关联两个序列的元素,并对结果进行分组 与常规联接不同的是,您得到一个项和一组相关项。然后可以在相关集合上应用不同的聚合,包括
Count()
:
如果第二个表中的PlaceId
和PersonId
的组合是唯一的,则上述内容就足够了。如果没有,则可以简单地将其与Distinct
组合,如下所示:
var data= from t1 in db.Person
join t2 in db.PlaceTraveled on t1.PersonID equals t2.PersonID into placeGroup
select new value
{
PersonName = t1.PersonName,
PLaceCount = placeGroup.Select(p => p.PlaceId).Distinct().Count()
};
我认为应该是这样的:
我认为应该是这样的:
你只是在你的查询中合并了两个表,你在哪里写了计数代码?在连接之后,做一个
组,这应该会给你想要的。你只是在你的查询中合并了两个表,你在哪里写了计数代码?在连接之后,做一个组,这应该会给你想要的。你能再解释一下吗?你能解释一下吗更多
var data= from t1 in db.Person
join t2 in db.PlaceTraveled on t1.PersonID equals t2.PersonID into placeGroup
select new value
{
PersonName = t1.PersonName,
PLaceCount = placeGroup.Select(p => p.PlaceId).Distinct().Count()
};