Как применить значение к списку объектов, где значение меняется каждые 7 записей в списке? ⇐ C#
Как применить значение к списку объектов, где значение меняется каждые 7 записей в списке?
У меня есть объект, для целей этого примера он довольно прост:
публичный класс DateEntry { общественная DateOnly Date {get; набор; } общественный ИНТ WeekNumber {получить; набор; } } Я получаю List из 42 экземпляров объекта DateEntry.
Поле Дата заполняется автоматически. Что мне нужно сделать, так это для каждых 7 из этих объектов мне нужно увеличить WeekNumber на 1. Это не WeekOfYear, это просто требование нашего пользовательского интерфейса. что первая неделя равна 1, вторая неделя – от 2 до 6 (точно так же, как недели, показанные в одном месяце любого календаря.)
Я знаю, что могу сделать это в циклах for, но мне бы хотелось сделать это с помощью LINQ.
У меня есть аналогичный метод, который разбивает его на список списков, каждый внутренний список содержит 7 записей. Но я действительно хочу просто изменить исходный список, чтобы WeekNumber отражал, в какой из 6 недель он находится. Я просто не мог понять, как изменить следующий метод.
публичный статический список SplitIntoWeeks (этот список? источник) { вар WeekIndex = 1; if (источник равен нулю || source.Count == 0) возвращаться []; источник возврата .Select((x, i) => new { Index = i, Value = x }) .GroupBy(x => x.Index/7) .Select(x => новые WeekOfDateEntries { Номер недели = Индекс недели++, Даты = x.Select(v => v.Date).ToList() }) .К списку(); } Ответ С небольшой поправкой ответ @harald-coppoolse оказался правильным. Мне просто нужно было поменять позицию index.
источник возврата .Select((dateEntry, index) => новая TimeEntryRecord { Дата = датаВвод.Дата, Номер недели = индекс / 7 + 1, }) .К списку();
У меня есть объект, для целей этого примера он довольно прост:
публичный класс DateEntry { общественная DateOnly Date {get; набор; } общественный ИНТ WeekNumber {получить; набор; } } Я получаю List из 42 экземпляров объекта DateEntry.
Поле Дата заполняется автоматически. Что мне нужно сделать, так это для каждых 7 из этих объектов мне нужно увеличить WeekNumber на 1. Это не WeekOfYear, это просто требование нашего пользовательского интерфейса. что первая неделя равна 1, вторая неделя – от 2 до 6 (точно так же, как недели, показанные в одном месяце любого календаря.)
Я знаю, что могу сделать это в циклах for, но мне бы хотелось сделать это с помощью LINQ.
У меня есть аналогичный метод, который разбивает его на список списков, каждый внутренний список содержит 7 записей. Но я действительно хочу просто изменить исходный список, чтобы WeekNumber отражал, в какой из 6 недель он находится. Я просто не мог понять, как изменить следующий метод.
публичный статический список SplitIntoWeeks (этот список? источник) { вар WeekIndex = 1; if (источник равен нулю || source.Count == 0) возвращаться []; источник возврата .Select((x, i) => new { Index = i, Value = x }) .GroupBy(x => x.Index/7) .Select(x => новые WeekOfDateEntries { Номер недели = Индекс недели++, Даты = x.Select(v => v.Date).ToList() }) .К списку(); } Ответ С небольшой поправкой ответ @harald-coppoolse оказался правильным. Мне просто нужно было поменять позицию index.
источник возврата .Select((dateEntry, index) => новая TimeEntryRecord { Дата = датаВвод.Дата, Номер недели = индекс / 7 + 1, }) .К списку();
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Python Systemd Timer каждые 2,5 часа после часа, но он работает каждые 2 часа
Anonymous » » в форуме Python - 0 Ответы
- 55 Просмотры
-
Последнее сообщение Anonymous
-