Возможно, это немного грубый подход, который потребует от вас предварительного заполнения двух списков датами (но это не так уж плохо, всего около 2000 элементов в каждом):
// Fill this up with all Hijri dates witin your range
List<int> hijriDates = new List<int>() { 1,2, 1437 };
// Fill this up with all gregorian dates within your range
List<int> gregorianDates = new List<int>() { 3,2, 2015 };
int number = 3452;
var result =
from i in hijriDates
from j in gregorianDates
where i + j == number
select new { Hijri = i , Gregorian = j};
После того, как вы отфильтровали списки возможных совпадений, вы можете выяснить, какие из них относятся к одному и тому же году. И вы можете сделать это, используя один из ответов отсюда:
Преобразование даты по григорианскому календарю в дату по хиджре
person
Leigh Shepperson
schedule
16.10.2015