خطا به این دلیل هست که دستور linq بایست به کوئری sql تبدیل بشه ولی متد GetMonth قابل ترجمه به sql نیست.
راه حل:
یک راهش اینه که در sql فانکشن و استورپروسیجر ایجاد کرده و تاریخ میلادی رو به شمسی تبدیل کنید و سلکت مورد نظر رو بنویسید و از استورپروسیجر استفاده کنید.
راه دیگرش هم اینه که تاریخ روز ابتدا و انتهای ماه شمسی رو به میلادی بدست بیارید که یک بازه ایجاد میشه و رکوردهایی که در این بازه هستند رو سلکت کنید.
DateTime today = DateTime.Today;
PersianCalendar pc = new PersianCalendar();
int shamsiCurrentYear = pc.GetYear(today);
int shamsiCurrentMonth = pc.GetMonth(today);
int daysInCurrentMonth = pc.GetDaysInMonth(shamsiCurrentYear, shamsiCurrentMonth);
DateTime dateTimeOfFirstDay = new DateTime(shamsiCurrentYear, shamsiCurrentMonth, 1, pc);
DateTime dateTimeOfLastDay = new DateTime(shamsiCurrentYear, shamsiCurrentMonth, daysInCurrentMonth, pc);
DataClasses1DataContext db = new DataClasses1DataContext();
var query =
from t in db.tbls
where t.RegDate >= dateTimeOfFirstDay
&& t.RegDate <= dateTimeOfLastDay
select t;