C# 返回C中子级的子级计数#
我有一个Application对象,其中包含applicator对象。申请人对象的Employments对象包含有关雇用的所有信息(姓名、地址等)。这可以是0或2,3,4,。。。如何获得一次申请的Emp计数?所以在图片中的这个例子中,它必须返回4。但我的代码返回2,因为它返回的是每个申请者的计数,而不是申请 这是我的代码:C# 返回C中子级的子级计数#,c#,C#,我有一个Application对象,其中包含applicator对象。申请人对象的Employments对象包含有关雇用的所有信息(姓名、地址等)。这可以是0或2,3,4,。。。如何获得一次申请的Emp计数?所以在图片中的这个例子中,它必须返回4。但我的代码返回2,因为它返回的是每个申请者的计数,而不是申请 这是我的代码: public void InsertApplication(Application application) { if (application.
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);
}
这是应用程序对象:
public class Application
{
public int Id { get; set; }
public virtual ICollection<Applicant.Applicant> Applicants { get; set; }
public int? NumberOfEmployments { get; set; }
好吧,你就快到了,问题是你要替换每个子节点的值,而不是添加它 更改为:
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);
}
好吧,你就快到了,问题是你要替换每个子节点的值,而不是添加它 更改为:
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);
}
如果我正确理解了您的结构,您应该能够使用相当简单的
SelectMany
和Count
:
application.Applicants.SelectMany(a => a.Employments).Count();
如果我正确理解了您的结构,您应该能够使用相当简单的
SelectMany
和Count
:
application.Applicants.SelectMany(a => a.Employments).Count();
SelectMany
可以帮助:
application.Applicants.SelectMany(x => x.Employments).Count();
SelectMany
可以帮助:
application.Applicants.SelectMany(x => x.Employments).Count();
您可以添加获取应用程序数量的方法,并使用
SelectMany
public class Application
{
public int Id { get; set; }
public virtual ICollection<Applicant> Applicants { get; set; }
public int? NumberOfEmployments { get; set; }
public int GetNumberOfApplications()
{
return this.Applicants.SelectMany(x => x.Employments).Count();
}
}
公共类应用程序
{
公共int Id{get;set;}
公共虚拟ICollection申请者{get;set;}
public int?NumberOfEmployments{get;set;}
public int GetNumberOfApplications()
{
返回此.applications.SelectMany(x=>x.Employments.Count();
}
}
您可以添加一个方法来获取应用程序的数量,并使用SelectMany
public class Application
{
public int Id { get; set; }
public virtual ICollection<Applicant> Applicants { get; set; }
public int? NumberOfEmployments { get; set; }
public int GetNumberOfApplications()
{
return this.Applicants.SelectMany(x => x.Employments).Count();
}
}
公共类应用程序
{
公共int Id{get;set;}
公共虚拟ICollection申请者{get;set;}
public int?NumberOfEmployments{get;set;}
public int GetNumberOfApplications()
{
返回此.applications.SelectMany(x=>x.Employments.Count();
}
}
以获取就业人数的总数来考虑代码中的这种变化:
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是因为最后一个应用程序的使用人数。 < P>以获得总数的就业人数考虑代码中的这种变化:
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,因为这是上一个应用程序的雇员人数。考虑更改此application.NumberOfEmployments=item.employments.Count()
toapplication.NumberOfEmployments+=item.Employments.Count()代码>如果application.NumberOfEmployments从0开始,则没有人会从中添加或删除项目。在所有其他情况下,您可以考虑使其成为生命计数,每次您请求对象时,只需简单地迭代集合,或者使用VistabelCelp并通过IoFiTyCyPrimeCopyEdvices跟踪更改,请考虑更改“<代码>应用程序”。code>toapplication.NumberOfEmployments+=item.Employments.Count()代码>如果application.NumberOfEmployments从0开始,则没有人会从中添加或删除项目。在所有其他情况下,您可以考虑使其成为生命计数,每次您请求对象时,只需简单地迭代集合,或者使用VistabelCelp并通过IntIfyCopyC改事件跟踪更改。