ورود

نسخه کامل مشاهده نسخه کامل : جمع کردن نتیجه دو دستور Where روی یک جدول ؟



ali_i3
26-06-2017, 09:55
درود,
توضیح کلی مشکل :
{
بنده میخوام بخش نظرات فروشگاهی رو که دارم طراحی میکنم بصورت پیجر ای جکسی دربیارم .
من بخش نظرات رو کاملا طراحی کرده بودم و همه قابلیت هاش(امکان ثبت نظر روی نظر) بدرسی هم کار میکنه ولی متاسفانه با استفاده از پیجر یکسری مشکلات و تغییرات برام بوجود اومده که نتونستم حلشون کنم و امیدوارم دوستان گرامی بتونن بنده رو یاری بدن .


میخوام بخش نظرات رو بصورت ایجکس پیجر نشون بدم به طوری که در هر صفحه 10 نظر نمایش یابد .
نکته مهمش اینه که بنده بخش نظرات رو طوری طراحی کردم که امکان نظر روی نظر تا 6 لایه وجود داره -
پس من باید علاوه بر 10 مورد از نظرات , تمام زیر نظرات مرتبط(یعنی نظراتی که روی این نظرات ثبت شده) رو هم نشون بدم و تو این قسمت کار مشکل دارم .

}

---------------------------------------------------------------------------------------------------------------------------------------------------------------------

دستورات خودم :

[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]

Bl_Comments یک ریپوزیتوری هست که بصورت دستی نوشته شده و دستوراتی مثل Add -Delete- Update , ... رو انجام میده .
دستور Where هم یک شرط رو روی جدول جستجو میکنه و نتیجه رو برمیگردونه .
Select همه سطر های جدول رو بر میگردونه .
Pid : آی دی محصول موردنظر

Vm_MyProduct : ویو مودلی هست که نتیجه به دست آمده برای نظرات رو در Vm_MyProduct.Comments آن قرار میگیرد.

---------------------------------------------------------------------------------------------------------------------------------------------------------------------

موردی که از دوستان میخوام راهنمایی کنند :
{
میخوام دوتا دستور Where روی یک جدول انجام بدم و نتیجه به دست آمده از هر دو دستور رو باهم جمع بزنم
(یعنی اگه نتیجه دستور اول دو سطر اطلاعات شد و دستور دوم هم پنج سط اطلاعات , در نتیجه نهایی همه با هم جمع بشن و بشه 7 سطر)

توضیح :
1 - میخوام در وحله اول 10 سطر از جدول نظرات را برگرداند
2 - و بعد هم دوباره یک جستجو روی جدول نظرات انجام شود وتمام سطر هایی که Parent_id آنها برابر Id یکی از این 10 سطر که در دستور اول برگرداندیم بود را برگرداند
---- : و نتیجه کلی دو مورد بالا با هم جمع شود .

}

_H2_
26-06-2017, 15:14
سلام
اگر میتوانید شرط را در همان Where با اپراتور || ادقام کنید، میتوانید از کلیدهای خارجی هم در شرط استفاده کنید، خود EF آنها را تبدیل به Join+Where میکند...
یعنی:
...A.Where(r => r.Product_Id = Pid || r.X == 123 || r.ParentRow.Y > 456 || r.ChildsRow.Any())...

این بازدهی خوبی دارد، تمام تلاش تان را کنید این تیپی انجامش دهید.
در قدم آخر و راه حل نهایی که زیاد هم جالب نیست، میتوانید از Union استفاده کنید:
var x = A.XXX.Where(r => r.....).YYY.Join(...).ZZZ;
var y = A.XXX.Where(r => r.....).YYY.Join(...).ZZZ;
.
var z = x.Union(y); //ریختن هردو نتیجه روی هم فقط به شرطی که فرمت/نوع خروجی ها یکی باشد

موفق باشید.