تماس با ما: 02166057992 چت آنلاین   ورود

بروز خطا در استفاده از متدهای تجمیعی با استفاده از LINQ


سلام

یک ViewModel دارم که باید بصورت زیر پیاده سازی بشه:


Public class ShowGroupViewModel
{
public int GroupID { get; set; }
public string GroupTitle { get; set; }
public int PageCount { get; set; }
}

متدی که باید فیلدها ViewModel را مقدار دهی بکنه بصورت زیر پیاده سازی شده:


public IEnumerable<ShowGroupViewModel> GetGroupsForView()
{
return db.PageGroups.Select(p => new ShowGroupViewModel()
{
GroupID = p.GroupID,
GroupTitle = p.GroupTitle,
PageCount = p.Pages.Count()
});
}

اما برنامه در خطی که p.Pages.Count() نوشته شده خطای زیر ار نمایش می دهد:

The specified type member is not supported in LINQ to Entities. Only initializers, entity members, and entity navigation properties are supported

مشکل در استفاده از متد Count هستش چون متد بالا اگر بصورت زیر پیاده سازی بشه درست کار میکنه و خطایی نمیده:


public IEnumerable<ShowGroupViewModel> GetGroupsForView()
{
return db.PageGroups.Select(p => new ShowGroupViewModel()
{
GroupID = p.GroupID,
GroupTitle = p.GroupTitle,
PageCount = db.Pages.Count(n => n.GroupID == p.GroupID)
});
}

لطفا راهنمایی کنید که چرا امکان استفاده از Count در حالت اول وجود نداره ولی با ارجاع به Context و دسترسی به جدول مورد نظر میشه خروجی را مطابق پیاده سازی دوم بدست آورد. آیا روش دوم در Performance برنامه اثر منفی میذاره؟

ممنون اگر توضیح بدهید



برنامه نویس
جهت کسب اطلاعات بیشتر به انجمن برنامه نویس مراجعه نمایید

نظرات شما

WhatsApp chat