A variable name inside a string has no meaning. In the following line the characters "i+2" are merely part of the string, and will be treated as such.
driver.FindElement(By.XPath("/html/body/app-root/app-auth/app-public/app-card/div/div/div[6]/div[i+2]/div/div[1]/kendo-datepicker/button/span")).Click();
If you want to use an evaluated expression then you need to use a string formatting option:
driver.FindElement(By.XPath(string.Format("/html/body/app-root/app-auth/app-public/app-card/div/div/div[6]/div[{0}]/div/div[1]/kendo-datepicker/button/span", i + 2)).Click();