2011-12-06 16 views
7

Dinamik türünde nesneleri tutan bir listeye sahibim. LINQ OrderBy yöntemini kullandığımda 'object' ifadesinin 'Date' için bir tanım içermediğini söyleyen bir hata alıyorum. Listemi tarihe göre sıralamak için ne yapabilirim?Dinamik Nesnelerle Bir Listeyi Nasıl Sıralamalı

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

Belki de yansıması ile? – Nate

+0

Lambda ifadelerinin dinamikleri desteklemediğini mi söylüyorsunuz? – zmbq

+0

LinqPad'de yürütür ve iyi çalışır. – okrumnow

cevap

6

Aynı Assembly'de gösterdiğiniz kod mu?

Anonim Türleri arasında derlemeler çalışmaz ve "Nesne bu tanımı içermiyor" hata iki farklı meclisleri örn

(isimsiz türünü kullanarak tipik bir belirtisi bir ASP.net içinde olduğu MVC sayfası Kontrolör anonim bir modeli bir model olarak döndürebilir ve Görünüm bunu kullanmayı deneyebilir => tam olarak bu hata ile patlar)

+0

Gerçekten de kod başka bir montajda. Gönderdiğim kod bir örnekti. Derlemeler boyunca çalışmayacağını bilerek, tarihe göre sıralamak için dinamik nesneler listesi oluşturan kodu değiştirebilir ve sonra sıralanan listeyi tüketen düzene geçirebilirim. Bilgi için teşekkürler! – Halcyon

+0

@Halcyon Cool. Sorun, anon türlerinin içsel olmasıdır. Onları, bir araya getirecek bir dinamik içinde sarmalayan bazı hackler var, ama gerçekten de çözümü yeniden araştırmak daha iyi. –

3

Sorgunun .NET 4.0'da çalıştığını doğruladım. Grubunuzdan Microsoft.CSharp referansını kaçırıyor musunuz?