tôi có một danh sách IQueryable
với loại COLOURS
lớpbiểu thức Lambda đặt hàng qua và đưa vấn đề
IQueryable<COLOURS> renkler = dbcontext.colours.Select(s=>new COLOURS{ ....
Tôi muốn nhận được ngẫu nhiên 2 hàng, tôi đang sử dụng khối mã này để làm điều này:
renkler.OrderBy(o => Guid.NewGuid()).Take(2);
Tôi muốn 2 hàng nhưng đôi khi nó có 3 hàng hoặc 5 hàng:
Take(2)
không hoạt động - vấn đề là gì?
tôi đã nhận thấy một cái gì đó khi tôi kiểm tra
var result = NewProducts().OrderBy(o => Guid.NewGuid()).Take(2);
int result_count = result.Count(); //This value is 2 :D
//but ToList() result 5 :D
Toàn bộ phương pháp:
public IQueryable<COLOURS> NewProducts()
{
DateTime simdi = DateTime.Now;
DateTime simdi_30 = DateTime.Now.AddDays(-30);
var collection_products = DefaultColours()
.Where(w => ((w.add_date.Value >= simdi_30 && w.add_date.Value <= simdi) || w.is_new == true))
.OrderByDescending(o => o.add_date).Take(200)
.Select(s => new COLOURS
{
colour_code = s.colour_code,
model_code = s.products.model_code,
sell_price = (decimal)s.sell_price,
market_price = (decimal)s.market_price,
is_new = (bool)s.is_new,
product_id = (int)s.product_id,
colour_name = s.name,
product_name = s.products.name,
description = s.products.description,
img_path = s.product_images.FirstOrDefault(f => f.is_main == true).img_path,
category_id = (int)s.category_relations.FirstOrDefault().category_id,
display_order = (short)s.display_order,
section_id = (int)s.products.section_id,
stock_amount = s.pr_sizes.Where(w => w.is_active == true && w.quantity >= 0).Count() > 0 ? (int)s.pr_sizes.Where(w => w.is_active == true && w.quantity >= 0).Sum(s2 => s2.quantity) : 0,
section_name = s.products.pr_sections.name,
});
return collection_products;
}
public IQueryable<COLOURS> RandomNewProducts(int n)
{
var result = NewProducts().OrderBy(o => Guid.NewGuid()).Take(n);
int result_count = result.Count(); //2
//When I run this method it's getting 5 rows
return result;
}
Cũng có thể hoặc không ảnh hưởng đến truy vấn cuối cùng. Bạn cũng có thể hiển thị truy vấn được hiển thị khi di chuột qua 'kết quả' không? Tôi mong chờ một cái gì đó như 'SELECT TOP 2 * FROM (SELECT TOP 200 * FROM ...)'. – CodeCaster
@theEmge: Rất nhiều người đang cố gắng giúp bạn ở đây và tất cả họ đều nói "hiển thị cho tôi mã". Họ muốn mã để họ có thể tái tạo các triệu chứng của bạn để tìm ra những gì đang xảy ra. Vui lòng ngừng đặt một đoạn mã một phần trong nhận xét - đặt toàn bộ mã của bạn vào câu hỏi, nếu không bạn chỉ lãng phí thời gian của mọi người. Nếu bạn có thể cắt mã xuống để một cái gì đó đơn giản mà vẫn còn trưng bày vấn đề, rất nhiều càng tốt. –
Điều này giống như phương thức mở rộng Take() trên System.Linq.Enumerable, nhưng nó thực sự? Nó có thể là một phương pháp cùng tên trên một lớp khác không? Vui lòng đăng tất cả mã của bạn, bao gồm các tham chiếu/báo cáo 'sử dụng' và phương thức DefaultColours(). –