با سلام خدمت دوستان عزیز,
توسط linq و EF میخوام جست جو تاریخ داشته باشم ولی نه بین دو بازه ی مختلف زمانی ( به دلیل متفاوت بودن تاریخ ابتدایی سال شمسی و میلادی)
تاریخ ها در sql به صورت میلادی ذخیره شده اند , و میخواهم تعداد رکورد های سال جاری شمسی رو به دست بیارم , و از کد زیر استفاده کردم:
return db.tbl.Where(d => SqlFunctions.DatePart("year", d.Date).Value == SqlFunctions.DatePart("year", DateTime.Now).Value).Count()
ولی با خطای runtime زیر رو به رو میشم که متاسفانه بعد از جست و جو راه حلی پیدا نکردم :
System.NotSupportedException: 'LINQ to Entities does not recognize the method 'System.Nullable`1[System.Int32] DatePart(System.String, System.Nullable`1[System.DateTime])' method, and this method cannot be translated into a store expression.'
ابتدا فکر کردم از تنظیمات region سیستم باشه که روی persian(iran) بود ولی بعد از تغییر به US هم خطا همچنان پا برجا بود.
ممنون میشم راهنمایی بفرمایید
سلام
تبدیلها را باید خارج ازWhere انجام بدهید نه داخل Where
یعنی تبدیل قطعه زیر بیرون where به چه شکل میشه ؟؟
d => SqlFunctions.DatePart("year", d.Date).Value
سلام
var x=SqlFunctions.DatePart("year", d.Date).Value;
var y=SqlFunctions.DatePart("year", DateTime.Now).Value;
return db.tbl.Where(d => x ==y ).Count();
سلام
یک select دیگر بنویس و Date را بگیر و تبدیل را انجام بده و مابقی کارها
مشکل خیلی ساده تر از اینا بود و به روش زیر حل شد :
return db.tbl.Where(d => d.AccountingODOYDate.Year == date.Year && d.AccountingODOYDate.Month == date.Month).Count()
ممنون از همیاریتان
البته این برای بازگردانی تعداد در سال و ماه جاری است...
هیچ کاربری تا کنون از این پست تشکر نکرده است
با ما تماس بگیرید تا در این مسیر همراهتان باشیم :)