0
因此,我的報告正好打印出我想要的(幾乎)。現在我只需要完成一項功能。我有一個數字被生成並放入一個稱爲百分比的變量中。基於int值將隨機行導出爲excel文件
百分比等於數據庫中allAttendeeLicenseNos拉入的所有許可證的舍入數乘以用戶輸入的數字乘以0.01以使其成爲百分比。
所以我的目標是看到所有與會者,並說好的這個人只想要他們的百分比,但是哪一個並不重要,所以我要抓取隨機行直到百分比數字在那裏。
再次請耐心等待,因爲我對C#非常陌生並且在學習。
var percentage = Math.Round(allAttendeeLicenseNos.Count() * Percentage * 0.01);
var allAttendeeData = _mii.LicenseeRecords.Where(r => allAttendeeLicenseNos.Contains(r.LicenseNumber)).Where(i => i.LicenseStatus.Equals(chosenLicenseStatus)).ToList();
var retval = _mapper.Map<List<DLILicense>, List<RandomAuditViewModel>>(allAttendeeData);
using (var exs = new ExcelPackage())
{
var worksheet = exs.Workbook.Worksheets.Add("RandomAuditReport");
var row = 1;
var col = 1;
var properties = typeof(RandomAuditViewModel).GetProperties();
foreach (var field in properties)
{
worksheet.Cells[row, col].Style.Font.Bold = true;
var displayName = field.GetCustomAttribute<DisplayAttribute>() != null ?
field.GetCustomAttribute<DisplayAttribute>().GetName() :
field.Name;
worksheet.SetValue(row, col, displayName);
col++;
}
col = 1;
row++;
retval.ForEach(i =>
{
var periodOrdinal = _ce.Events
.Where(e => e.Attendees.Select(a => a.LicenseNumber).Contains(i.LicenseNumber))
.Select(e => e.Course.CertificationPeriod)
.OrderBy(p => p.StartDate)
.ToList()
.IndexOf(thePeriod) + 1;
i.MetRequirements = determineIfCeMet(i.LicenseNumber, i.LicenseTypeCode, i.DateOfOriginalLicensure, periodOrdinal, thePeriod.Id, thePeriod.EndDate, thePeriod.Board);
foreach (var field in properties)
{
if (field.GetCustomAttribute<DataTypeAttribute>().DataType.Equals(DataType.Date))
{
var value = ((DateTime)field.GetValue(i));
worksheet.Cells[row, col].Style.Numberformat.Format = "MM/dd/yyyy";
worksheet.Cells[row, col].Formula = "=DATE(" + value.Year + "," + value.Month + "," + value.Day + ")";
}
else worksheet.SetValue(row, col, field.GetValue(i));
col++;
}
col = 1;
row++;
});
return exs.GetAsByteArray();
我會使用if語句還是會使while語句更好? – CheezStix
你最終會得到相同的結果,方式。我會選擇if,因爲你需要迭代記錄。因此,如果你使用while循環,你仍然需要一個整數來計算你所在的行,並將其與百分比進行比較:「while(myRowCountingInteger <= Percentage)」,然後在循環結束時,你會得到「myRowCountingInteger ++ 「所以你不會真的爲自己節省很多麻煩,所以我認爲當你回來幾個月後,如果陳述更容易閱讀,並需要弄清楚你在做什麼。 –
也想指出,這不是給你「隨機」行,它只是給你第一個這麼多,以滿足百分比的要求。 –