EF5 - 计算儿童和孙子 - 简化我的linq

时间:2014-11-27 18:25:57

标签: c# linq entity-framework

我在这里读了很多关于计算实体的子孙的堆栈溢出的帖子。

我的实体层次结构是

Clients -> Locations -> Users

我编写了以下LINQ lambda表达式,它运行得非常好。

int locations = _clientRepository.Clients
                    .Where(x => (x.ClientId == id))
                    .Select(x => x.Locations.Count())
                    .First();

int users     = _clientRepository.Clients
                    .Where(x => (x.ClientId == id))
                    .Select(x => x.Locations.Sum(l => l.Applicants.Count()))
                    .First();

我觉得有一种方法可以进一步简化它。第一种方法似乎应该是不必要的,但我只是好奇是否有更好的方法来编写它。

提前致谢!

1 个答案:

答案 0 :(得分:2)

int number1 = myClientRepository
    .Clients
    .Where(x => x.ClientId == Id)
    .First()
    .Locations
    .Count;

int User1 = myClientRepository.Clients
    .Where(x => x.ClientId == Id)
    .First()
    .Locations.Sum(x => x.Applicants.Count);