How can I fill the gaps in attribute values in the list?

CSharp · Console

/Program.cs

using System;
using System.Collections.Generic;
using System.Linq;

public class Program
{
	
	public static void Main()
	{
		var myList= new List<BtnCountViews>
		{
			new BtnCountViews{ DayOfYear = 5, BtnCount = 10, Views = 5},
			new BtnCountViews{ DayOfYear = 25, BtnCount = 8, Views = 6},
			new BtnCountViews{ DayOfYear = 52, BtnCount = 12, Views = 7},
			new BtnCountViews{ DayOfYear = 75, BtnCount = 15, Views = 8},
			new BtnCountViews{ DayOfYear = 250, BtnCount = 20, Views = 9}
		};
		
		var filled = GetBackFilledList(myList);
		filled.OrderBy(f => f.DayOfYear).Dump();
	}
	
	public static IList<BtnCountViews> GetBackFilledList(IList<BtnCountViews> incoming)
	{
		var map = incoming.ToDictionary(k => k.DayOfYear, v => v);
		var defaultList = GetDefaultList();
		
		foreach(var itm in defaultList)
		{
			if (map.ContainsKey(itm.DayOfYear)) continue;
			
			map.Add(itm.DayOfYear, itm);
		}
		
		return map.Select(m => m.Value).ToList();
	}
	
	public static IList<BtnCountViews> GetDefaultList()
	{
		//var daysInYear = DateTime.IsLeapYear(DateTime.Today.Year) ? 366 : 365;
		var defaultList = Enumerable.Range(1, 365).Select(e =>
			new BtnCountViews
			{
				DayOfYear = e,
				BtnCount = 0,
				Views = 0
			}
		).ToList();
		
		return defaultList;
	}
	
	// Define other methods and classes here
	public class BtnCountViews
	{
		public int DayOfYear { get; set; }
		public int BtnCount { get; set; }
		public int Views { get; set; }
	}	
}
;