Nối hai IEnumerable trong Sitecore ContentSearchManager GetQueryable
Hướng dẫn các bạn cách nối hai danh sách IEnumerable khi thực hiện context.GetQueryable trong Sitecore. Đề bài được đặt ra là nối hai danh sách sản phẩm mới với nhau.
Giả sử trong trường hợp sau:
Tôi có một danh sách:
- Lấy 3 sản phẩm mới nhất là getNewProduct
- Lấy 3 sản phẩm bán chạy nhất getTrendProduct
Yêu cầu hiển thị ra 6 sản phẩm từ 2 danh sách kia, nhưng bộ lọc lấy sản phẩm chỗ mỗi lần thì có câu query ContentSearchManager GetQueryable khác nhau và chỉ trả về được cho 1 model, do đó ta phải làm sao?
Cách làm:
Đầu tiên, bạn tạo 2 query context.GetQueryable<your_model> để lấy các sản phẩm theo đề bài yêu cầu. Sau đó, tiến hành tạo một biến mới để nối hai danh sách lại với nhau.
Chúng ta sẽ sử dụng hàm Concat trong Linq, tạo một biến mới tên getListProduct và mã thực hiện như sau:
var getListProduct = getNewProduct.Concat(getTrendProduct);
Như vậy, cả hai danh sách IEnumerable đã được nối với nhau và lưu trong biến danh sách mới có tên getListProduct. Các element trong list getTrendProduct đã được nối theo sau list getNewProduct. Bây giờ, bạn có thể dùng foreach để in Model getListProduct ra 6 sản phẩm như yêu cầu của đề bài từ cùng 1 Model.
Xem thêm: Hướng dẫn Indexing manager trong Sitecore cho Search Solr