繁体   English   中英

我如何在LINQ中做到这一点

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM