首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >C#中子级的返回计数

C#中子级的返回计数
EN

Stack Overflow用户
提问于 2016-02-25 20:18:42
回答 6查看 273关注 0票数 1

我有一个应用程序对象,其中包含申请者对象。申请者对象有就业对象,该对象包含有关就业的所有信息(名称、地址、.)可以是0或者2,3,4,.我怎样才能计算出一份申请的电子邮件数量?所以在这个例子中,它必须返回4,但是我的代码返回2,因为它返回每个申请者的计数,而不是申请。

这是我的密码:

代码语言:javascript
复制
 public void InsertApplication(Application application)
    {
        if (application.Applicants != null)
        {
            foreach (var item in application.Applicants)
            {
                if (item.Employments != null)
                {
                    application.NumberOfEmployments = item.Employments.Count();
                }
            }
        }
        creditApplicationsContext.Applications.Add(application);
    }

这是应用程序对象:

代码语言:javascript
复制
  public class Application
    {
      public int Id { get; set; }
      public virtual ICollection<Applicant.Applicant> Applicants { get; set;    }
      public int? NumberOfEmployments { get; set; }

这是申请人的反对意见:

代码语言:javascript
复制
 public class Applicant
{

    public int Id { get; set; }
    public virtual ICollection<Employment> Employments { get; set; }
      ....
     }

这就是就业对象:

代码语言:javascript
复制
  public class Employment
  {

    public int Id { get; set; }
    public string EmployerName { get; set; }
    public string EmployerPhoneNumber { get; set; }
    public Applicant Applicant { get; set; } 
     .....
    }
EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2016-02-25 20:30:45

要获得总就业人数,请考虑代码中的以下更改:

代码语言:javascript
复制
public void InsertApplication(Application application)
{
    if (application.Applicants != null)
    {
        foreach (var item in application.Applicants)
        {
            if (item.Employments != null)
            {
                application.NumberOfEmployments += item.Employments.Count();
            }
        }
    }
    creditApplicationsContext.Applications.Add(application);
}

这样你就有了总就业人数。我认为您的代码返回2,因为这是上一个应用程序的雇用人数。

票数 1
EN

Stack Overflow用户

发布于 2016-02-25 20:24:25

如果我正确地理解了您的结构,您应该能够使用相当简单的SelectManyCount

代码语言:javascript
复制
application.Applicants.SelectMany(a => a.Employments).Count();
票数 5
EN

Stack Overflow用户

发布于 2016-02-25 20:23:31

好吧,你已经快到了,问题是你要替换每个子节点的值,而不是添加它。

改为:

代码语言:javascript
复制
public void InsertApplication(Application application)
{
    application.NumberOfEmployments = 0;

    if (application.Applicants != null)
    {
        foreach (var item in application.Applicants)
        {
            if (item.Employments != null)
            {
                application.NumberOfEmployments += item.Employments.Count();
            }
        }
    }
    creditApplicationsContext.Applications.Add(application);
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35637474

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档