ورود

View Full Version : حرفه ای: فیلتربندی



Morteza_agpr
دوشنبه 08 شهریور 1395, 01:16 صبح
سلام
ممنون میشم سوالمو جواب بدین!!!
این فیلتر بندی که در عکس هست اولا آیا داینامیک هست؟ یعنی آدمین میتونه اضاف یا کم کنه؟
بعد اینکه آیا همه ی این فیلتر ها در یک جدول هستند؟ مثلا جدول tbl_filter ؟
142240


من یه جدول در نظر گرفتم ولی یه مشکلی که دارم اینکه مثلا وقتی کاربر سامسونگ رو انتخاب میکنه محصولات اونو میاره ولی ولی وقتی رنگ مشکی رو انتخاب میکنه دیگه نمیره اون کالاهای مشکی مربوط به سامسونگ رو بیاره هم کالاهای سامسونگ میاره هم همه ی ائنایی که رنگ مشکی اند!!! کدم رو هم میزارم



public IList<Product> GetProductByFilter(IEnumerable<SubCategory> CatId,int Max, int Min, List<int> CategoryId, List<int> ValueId) {

List<Product> Products = new List<Product>(); List<Product> FinalProducts = new List<Product>();
if (CategoryId != null&&CategoryId.Count >0) {
foreach (var item in CategoryId) {
var Result = db.Products.Where(c => c.SubCategoryId == item);
Products.AddRange(Result); // کالاهای مربوط به گروهها مثلا موبایل ، لپ تاپ ، یا زیر گروه اونها
}
} else { Products = GetAllProductAttr(CatId).ToList(); }




if (Max>0 && Min > 0) { var Result = Products.Where(c => c.Price >= Min && c.Price <= Max).ToList(); Products.AddRange(Result);
}
if (ValueId !=null && ValueId.Count > 0) { foreach (var item in ValueId) {
var Result = from a in Products join b in db.ProductProperties on a.ProductId equals b.ProductId where b.PropertyId == item select a;


FinalProducts.AddRange(Result.ToList()); // اینجا هم همون فیلترها مثل شرکت سازنده ، رنگ و فیلترهای دیگه
}
Products = FinalProducts; }






return Products.ToList();

}