public virtual void AddReportOutput(IReportOutputData report)
        {
            if (XmlReports == null)
            {
                XmlReports = new List <ReportOutputData>();
            }

            var exists = (from x in XmlReports
                          where x.Format == report.Format &&
                          x.ReportType == report.ReportType &&
                          x.OutputPath == report.OutputPath
                          select x).Any();

            if (!exists)
            {
                var list = report.Params == null ? null : (from p in report.Params
                                                           select new NameValuePair(p.Name, p.Value)).ToList();

                XmlReports.Add(new ReportOutputData()
                {
                    Format     = report.Format,
                    OutputPath = report.OutputPath,
                    ReportType = report.ReportType,
                    XmlParams  = list
                });
            }
        }
        public virtual void RemoveAllReports(IReportOutputData report)
        {
            Predicate <ReportOutputData> match = null;

            if (this.XmlReports != null)
            {
                if (match == null)
                {
                    match = rr => ((rr.Format == report.Format) && (rr.ReportType == report.ReportType)) && (rr.OutputPath == report.OutputPath);
                }
                this.XmlReports.RemoveAll(match);
                if (this.XmlReports.Count < 1)
                {
                    this.ClearReports();
                }
            }
        }