[英]How can I make this in LINQ
我在数据库上有一张桌子
Id, Name, CityId, UserId
------------------------
1, John, 1, null
2, John, null, 2
3, Jack, 1, null
4, John, 2, null
我在这里需要做的是生成这样的东西:
Name, Cities, Users
------------------
John, 2, 1
Jack, 1, 0
像:John有两列带有CityId,一列带有UserId,而Jack有一列带有CityId,无列带有UserId。
我首先尝试按名称分组:
var result = GetTable().GroupBy(p => p.Name).Select(p => p.FirstOrDefault().Name);
但是我不知道如何获得城市和用户的数量,或者我应该这样走:
foeach(var item in result){
GetTable().Where(p => p.Name.Equals(item) && p.CityId.HasValue).Count;
}
用户也一样
按名称分组,然后计算每个组的非null CityId和UserId值:
var result = table
.GroupBy(r => r.Name)
.Select(grp => new
{
Name = grp.Key,
Cities = grp.Count(x => x.CityId != null),
Users = grp.Count(x => x.UserId != null)
}).ToList();
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.