PDA

View Full Version : GroupBy کاربران توسط ماه های شمسی



Snoopboy
سه شنبه 27 آبان 1399, 12:18 عصر
من از Identity 3.1 استفاده کردم خودش همه جداول رو ساخته و فیلد تاریخ ثبت نام رو به صورت Datetime خودم اضافه کردم
منتها الان برای اینکه بدونم در هر ماه چند کاربر ثبت نام کردن مشکل دارم لطفا من رو راهنمایی کنید
دستور لامبدا رو برایتون میذارم

var pc = new PersianCalendar();

var dt = JsonConvert.SerializeObject(_userManager.Users
.GroupBy(o => new
{
Month = o.RegisterDate.Date,
})
.Select(g => new
{
Month = pc.GetMonth(g.Key.Month),
Total = g.Count()
})
.ToList()) ;

ali_md110
سه شنبه 04 آذر 1399, 22:05 عصر
بکارگیری متد تبدیل تاریخ در عبارات لامبدا قابل قبول نیست و خطا صادر میکند
این قسمت از کدها را حذف کنید


Month = pc.GetMonth(g.Key.Month),

بجاش g.key.mounth کافی هست
راه حل ها:

1- در سمت کلاینت معادل ماه میلادی بدست امده را به شمسی تبدیل کنید
2- با Automapper هم میتونید تاریخ را تبدیل کنید

3- بعد یا قبل از گروپ کردن ToList بکار ببرید و بعد از واکشی لیست خام یا گروه بندی شده , متد شمسی را در دستور select بکار ببرید



var dt = JsonConvert.SerializeObject(_userManager.Users .GroupBy(o => new
{
Month = o.RegisterDate.Date,
}).ToList()



روش آخر و Automapper در سمت سرور کمی سربار دارد و دوباره کاری دارد ولی به نتیجه میرسید