Tôi có một giao diện báo cáo trong đó người dùng cuối sẽ chọn nhiều trường cho thứ tự sắp xếp của báo cáo được trả về. Vấn đề tôi gặp phải là tôi không thể thực sự chuỗi các phương thức OrderBy/ThenBy, vì tôi đang lặp qua một danh sách các trường sắp xếp. Tôi đang nghĩ đến một cái gì đó như thế này:Lập trình chuỗi OrderBy/ThenBy sử dụng LINQ/Entity Framework
foreach (string sort in data.SortParams)
{
switch (sort)
{
case "state":
query = query.ThenBy(l => l.RegionCode);
break;
case "type":
query = query.ThenBy(l => l.Type);
break;
case "color":
query = query.ThenBy(l => l.Color);
break;
case "category":
query = query.OrderBy(l => l.Category);
break;
}
}
(Lưu ý:. Tôi đã gỡ bỏ công tắc xác định nếu điều này là mục trước sắp xếp để đơn giản)
Bất kỳ suy nghĩ về làm thế nào để lặp qua một bộ sưu tập để xác định thứ tự sắp xếp?
Quảng cáo, nhưng cần phải kiểm tra xem điều này có ảnh hưởng đến hiệu suất truy vấn hay không. Nó có thể ngăn chặn việc sử dụng chỉ mục. – usr
Điều này làm việc như một sự quyến rũ đối với tôi. Lúc đầu, tôi đã có chính xác mã tương tự như trên, tuy nhiên tôi đã buộc phải chọn một cột mặc định cho 'OrderBy() đầu tiên' - Tôi không biết tôi có thể đặt 0 ở đó để thay thế. Số 0 sẽ làm cho truy vấn SQL cuối cùng xuất hiện với cột phụ có giá trị 0 cho mỗi hàng, sau đó nó sắp xếp theo hàng đó, đạt được phân loại giả, sau đó nó áp dụng tất cả các cột trong chuỗi 'ThenBy() ' 'mà bạn đã thêm. Cảm ơn! – BeemerGuy
Tôi nhận được 'ArgumentOutOfRangeException' khi gọi' OrderBy (l => 0) '. [Ở đây] (https://pastebin.com/raw/TZQ9g8Es) là 'StackTrace'. – Shimmy