tôi đã cùng một vấn đề, tôi giải quyết nó bằng cách sử này:
mã của bạn:
IQueryable<DomainModel.User> userResult = userResult.OrderBy(u => u.UserClientRoles.OrderBy(r => r.Role.RoleName));
mã của tôi:
List<Membership> results = new List<Membership>();
results.AddRange(memberships.OrderBy(m => m.Roles));
memberships = results.AsQueryable();
trùng hợp ngẫu nhiên:
*.OrderBy(m => m.Roles)
giải pháp:
*.OrderBy(m => m.Roles.Select(r => r.RoleId).FirstOrDefault())
lý do
có thể vấn đề của:
Có lẽ, bạn đã làm những gì tôi đã làm, và gây ra điều đó 1 người dùng/thành viên có thể có nhiều hơn 1 vai trò trong cùng một thành viên. Điều đó gây ra xung đột với/với OrderBy() vì ứng dụng chỉ có thể "đặt hàng" một phần tử vào thời điểm đó, khi cô gọi Vai trò (là một phần tử ICollection) thay vào đó nhận được nhiều hơn 1 phần tử không có loại ưu tiên các mức (ngay cả khi chúng ta có thể giả định rằng ứng dụng sẽ lấy chỉ mục của vai trò là mức cơ sở ưu tiên, thực sự nó không). Giải thích
giải pháp của:
Khi bạn thêm *.Select(r => r.RoleId)
, bạn đang xác định cho các ứng dụng mà phần tử sẽ được sử dụng để OrderBy(). Nhưng, như bạn sẽ thấy khi bạn có thể đạt được vào thời điểm này, chỉ bằng cách sử dụng *.Select(r => r.RoleId)
có thể không đủ, bởi vì ứng dụng vẫn nhận được nhiều kết quả với cùng mức độ ưu tiên. Thêm *.Select(r => r.RoleId).FirstOrDefault()
về cơ bản bạn nói: "... Tôi không quan tâm bạn nhận được bao nhiêu kết quả từ phần tử đó, chỉ tập trung vào kết quả đầu tiên, hoặc sắp xếp chúng theo mặc định ..." (mặc định thường có nghĩa là EMPTY hoặc NULL).thêm
thông tin:
tôi đã sử dụng khái niệm đơn giản không chính thức của/ý nghĩa để giải thích một giải pháp phức tạp với các từ đơn giản, có nghĩa là bạn có thể có thể có vấn đề để tìm bài tương tự trong các trang web bằng cách sử dụng các từ/khái niệm được sử dụng trong "câu trả lời" này. Nếu không, mã này hoạt động và bạn không nên có bất kỳ vấn đề nào bằng cách áp dụng nó và/hoặc tự sửa đổi nó. CHÚC MAY MẮN!!! (^_^)
Có đúng là bạn trả về enumartion của các giá trị. Sau đó tôi có thể đạt được thứ tự bằng cách nào? Xin vui lòng nếu bạn có bất kỳ ý tưởng cho tôi biết. –
Nếu bạn có thể giải thích cách bạn muốn danh sách các vai trò ảnh hưởng đến thứ tự của userResult, tôi có thể giúp tìm ra nó cho bạn. Ví dụ: lấy RoleName đầu tiên trong danh sách hoặc số lượng vai trò, v.v. –
Một câu lệnh đó sẽ 'trả về một liệt kê các giá trị, không thể ra lệnh' đã làm hai việc: khiến tôi cảm thấy như một thằng ngốc không suy nghĩ về cách một bộ có thể được sử dụng để đặt hàng một cái gì đó, và đã cho tôi suy nghĩ về những gì tôi * thực sự * muốn sử dụng để đặt hàng bộ của tôi. Cảm ơn! – cjbarth