Учитывая список из 5 возможных элементов, приведенный ниже метод вернет новый список из 5 элементов (добавление дополнительных элементов, если в исходном списке менее 5).Это работает нормально, но теперь мне нужно реорганизовать его, чтобы он мог обрабатывать общий список T (тот, который будет иметь те же свойства года и Cnt).Как я могу преобразовать этот метод в список и вернуть ему новый список с 5 элементами?
private static List<FiveYearComplex> CreateFiveYearTemplate(int startYear,
int endYear, ObjectResult<FiveYearComplex> result)
{
var list = new List<FiveYearComplex>(5);
for (int year = startYear; year < endYear; ++year)
{
list.Add(new FiveYearComplex() { Year = year, Cnt = 0 });
}
FiveYearComplex tmpItem;
foreach (var item in result)
{
tmpItem = list.Find(w => w.Year == item.Year);
if (tmpItem == null)
{
tmpItem = new FiveYearComplex() { Cnt = 0, Year = item.Year };
}
else
{
tmpItem.Cnt = item.Cnt;
}
}
return list;
}
Когда я пытаюсь использовать Список, я в итоге сталкиваюсь с этим разделом:
for (int year = startYear; year < endYear; ++year)
{
list.Add(new T() { Year = year, Cnt = 0 });
}
и я получаю сообщение об ошибке ...
Спасибо!
За полноту:
public interface IYearTemplate
{
int? Year { get; set; }
decimal? Cnt { get; set; }
}
private static List<T> CreateFiveYearTemplate <T> (
int startYear, int endYear,
ObjectResult<FiveYearAttendanceComplex> result)
where T : IYearTemplate, new()
{
var list = new List<T>(5);
for (int year = startYear; year < endYear; ++year)
{
list.Add(new T() { Year = year, Cnt = 0 });
}
T tmpItem;
foreach (var item in result)
{
tmpItem = list.Find(w => w.Year == item.Year);
if (tmpItem == null)
{
tmpItem = new T() { Cnt = 0, Year = item.Year };
}
else
{
tmpItem.Cnt = item.Cnt;
}
}
return list;
}
Спасибо.