2011-12-06 45 views
7

Tôi có danh sách chứa đối tượng thuộc loại động. Khi tôi sử dụng phương thức LINQ OrderBy, tôi nhận được thông báo lỗi 'đối tượng' không chứa định nghĩa cho 'Ngày'. Tôi có thể làm gì để sắp xếp danh sách của mình theo ngày?Cách sắp xếp danh sách với đối tượng động

List<dynamic> employees = new List<dynamic>(); 

employees.Add(new 
{ 
    ID = 1, 
    Name = "Larry", 
    Date = new DateTime(2010, 10, 1), 
}); 

employees.Add(new 
{ 
    ID = 2, 
    Name = "Clint", 
    Date = new DateTime(2011, 5, 28), 
}); 

employees.Add(new 
{ 
    ID = 3, 
    Name = "Jason", 
    Date = new DateTime(2011, 7, 6), 
}); 

var query = employees.OrderBy(x => x.Date); 
+0

Có thể có phản ánh? – Nate

+0

Bạn đang nói các biểu thức lambda không hỗ trợ động lực? – zmbq

+0

Trong LinqPad nó thực hiện và hoạt động tốt. – okrumnow

Trả lời

6

Mã bạn đã hiển thị trong cùng một Hội đồng chưa?

loại

Anonymous sẽ không làm việc trên cụm, và "đối tượng không chứa định nghĩa này" lỗi là dấu hiệu điển hình của việc sử dụng một loại vô danh từ hai cụm khác nhau

(ví dụ, trong một ASP.net Trang MVC Bộ điều khiển có thể trả về loại ẩn danh làm kiểu và Chế độ xem có thể cố gắng sử dụng nó => thổi lên với chính xác lỗi đó)

+0

Thật vậy, mã trong một hội đồng khác. Mã tôi đăng là một ví dụ. Biết rằng nó sẽ không hoạt động trên các assembly, tôi đã có thể sửa đổi mã tạo danh sách các đối tượng động để sắp xếp theo ngày và sau đó chuyển danh sách được sắp xếp đến assembly tiêu thụ. Cảm ơn bạn về thông tin! – Halcyon

+0

@Halcyon Cool. Vấn đề là các loại anon là nội bộ. Có một số hacks bọc chúng trong một năng động cho phép họ làm việc trên các hội đồng, nhưng thực sự tốt hơn là rearchitect giải pháp. –

3

Tôi đã xác minh rằng truy vấn của bạn hoạt động trong .NET 4.0. Bạn có thiếu tham chiếu đến Microsoft.CSharp từ hội đồng của mình không?

Các vấn đề liên quan