Это для приложения. net core 3.1, использующего Blazor в качестве внешнего интерфейса.
У меня есть список дат, которые мне нужно взять, а затем построить «аналитический» отчет, используя эти даты. Анализ в основном должен смотреть на даты и сообщать мне, сколько дат приходится на каждый день недели, а также сколько дат приходится на каждый месяц в году. Это приложение для управления персоналом, в котором отслеживаются отсутствия сотрудников.
У меня есть список, который я создал, и я передаю его в метод, который затем выполняет анализ.
public class DateHourResponseModel
{
public DateTime Date { get; set; }
public int Hours { get; set; }
}
Я подумал, что могу взять этот список и создать список «Ответов», каждый для разного дня недели и месяца года. Я решил, что для «Типа» я могу просто использовать DateTime.DayOfWeek, DateTime.Month и получить значение (0–6 для дня недели, 1–12 для месяца), поэтому у меня есть bool «IsMonth».
public class AbsenceAnalysisResponse
{
public int Type { get; set; }
public bool IsMonth { get; set; }
public int Count { get; set; }
public int Hours { get; set; }
}
И этот класс, который представляет собой просто список из вышеперечисленных:
public class AbsenceAnalysis
{
public List<AbsenceAnalysisResponse> Responses { get; set; }
}
Мой вопрос: есть ли способ создать этот отчет об анализе, выполнив foreach на список дат, с которых я начинаю? Я не нашел способа создать этот список, не делая что-то вроде этого:
var analysisResponses = new List<AbsenceAnalysisResponse>
{
new AbsenceAnalysisResponse
{
Type = 0,
IsMonth = false,
Count = dateHourModel.Count(x => (int)x.Date.DayOfWeek == 0),
Hours = dateHourModel.Where(x => (int)x.Date.DayOfWeek == 0).Sum(x => x.Hours)
},
Я чувствую себя идиотом, потому что знаю, что должен быть более элегантный способ сделать это, и, возможно, проблема в том, как я к этому подхожу. У меня есть анализ, работающий и отображаемый в интерфейсе, но я абсолютно ненавижу то, как я создаю список «ответов». Я все еще довольно зелен за ушами, и я не знаю, просто не искал ли я правильные вопросы в Интернете или что-то еще, но я не нашел ничего, где кто-то делал бы что-то подобное. Благодарим за любую помощь и дайте мне знать, если есть какая-либо информация, которую мне нужно предоставить.