C# 将参数传递给getter/setter

C# 将参数传递给getter/setter,c#,C#,我有一个带有计算参数的类: public class Job { public Job() { Reports = new List<Report>(); } [Key] public int JobID { get; set; } public ICollection<Report> Reports { get; set; } public DateTime Appoin

我有一个带有计算参数的类:

public class Job
{
    public Job()
    {            
        Reports = new List<Report>();
    }

    [Key]
    public int JobID { get; set; }

    public ICollection<Report> Reports { get; set; }
    public DateTime AppointmentDate { get; set; }

    public decimal AverageReportTurnaround
    {
        get
        {
            DateTime reportdate = Reports.Select(x=>x.DateCompleted).FirstOrDefault();

            return (reportdate - AppointmentDate).Value.Days;

        }
    }
公共类作业
{
公职()
{            
报告=新列表();
}
[关键]
public int JobID{get;set;}
公共ICollection报告{get;set;}
公共日期时间任命日期{get;set;}
公共十进制平均器端口周转
{
得到
{
DateTime reportdate=Reports.Select(x=>x.DateCompleted).FirstOrDefault();
返回(reportdate-任命日期).Value.Days;
}
}

如何将datefrom字段传递给构造函数,使其仅计算reportdate为>datefrom的AveragerReportTurnound?

您可以使用专用字段

public class Job
{
    private DateTime fromDate;

    public Job(DateTime fromDate)
    {             
        Reports = new List<Report>();
        this.fromDate = fromDate;
    }
    ...
    public decimal AverageReportTurnaround
    {
        get
        {
            DateTime reportdate = Reports.Where(x => x.DateCompleted > this.fromDate)
                .Select(x=> x.DateCompleted).FirstOrDefault();
            return (reportdate - AppointmentDate).Value.Days;

        }
    }
}
公共类作业
{
私有日期时间fromDate;
公共作业(日期时间自日期)
{             
报告=新列表();
this.fromDate=fromDate;
}
...
公共十进制平均器端口周转
{
得到
{
DateTime reportdate=Reports.Where(x=>x.DateCompleted>this.fromDate)
.Select(x=>x.DateCompleted).FirstOrDefault();
返回(reportdate-任命日期).Value.Days;
}
}
}
您可以执行以下操作:

public class Job
{
public Job(DateTime dateFrom)
{            
    Reports = new List<Report>();
    DateFrom = dateFrom;
}

[Key]
public int JobID { get; set; }

public ICollection<Report> Reports { get; set; }
public DateTime AppointmentDate { get; set; }
public DateTime DateFrom { get; private set; }

public decimal AverageReportTurnaround
{
    get
    {
        DateTime reportdate = Reports.Where(x => x.ReportDate > DateFrom).Select(x=>x.DateCompleted).FirstOrDefault();

        return (reportdate - AppointmentDate).Value.Days;

    }
}
公共类作业
{
公共作业(DateTime dateFrom)
{            
报告=新列表();
DateFrom=DateFrom;
}
[关键]
public int JobID{get;set;}
公共ICollection报告{get;set;}
公共日期时间任命日期{get;set;}
public DateTime DateFrom{get;private set;}
公共十进制平均器端口周转
{
得到
{
DateTime reportdate=报告。其中(x=>x.reportdate>DateFrom)。选择(x=>x.DateCompleted)。FirstOrDefault();
返回(reportdate-任命日期).Value.Days;
}
}

但是,如果您在EntityFramework中使用此类(从“Key”属性判断),则应将AveragerReportTurnound转换为dateFrom作为参数的方法

,您可以尝试
索引器
。如果不满足条件,则AveragerReportTurnound应为零或没有值(null)?根本不应包含在计算中(如果我将其设为0,但返回它,则它将向下拖动平均值)