Hoe een lijst met dynamische objecten sorteren

Ik heb een lijst met objecten van het type dynamisch. Wanneer ik de LINQ OrderBy-methode gebruik, krijg ik een foutmelding dat 'object' geen definitie voor 'Datum' bevat. Wat kan ik doen om mijn lijst op datum te sorteren?

List employees = new List();

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);
7
U zegt dat lambda-expressies de dynamiek niet ondersteunen?
toegevoegd de auteur zmbq, de bron
Misschien met reflectie?
toegevoegd de auteur Nate, de bron
In LinqPad wordt het uitgevoerd en werkt het goed.
toegevoegd de auteur okrumnow, de bron

2 antwoord

Is de code die je in dezelfde assembly hebt getoond?

Anonieme typen werken niet samen, en de fout "Object bevat deze definitie" is een typisch teken van het gebruik van een anoniem type uit twee verschillende samenstellen

(e.g., in an ASP.net MVC page the Controller may return an anonymous type as a model and the View may try to use it => blows up with exactly that error)

6
toegevoegd
@Halcyon Cool. Het probleem is dat anon-typen intern zijn. Er zijn een aantal hacks die ze in een dynamiek verpakken die hen in staat stelt om samen te werken, maar het is inderdaad beter om de oplossing opnieuw te ontwerpen.
toegevoegd de auteur Michael Stum, de bron
De code bevindt zich inderdaad in een andere assembly. De code die ik heb gepost was een voorbeeld. Omdat ik wist dat het niet tussen assemblies zou werken, kon ik de code aanpassen die de lijst met dynamische objecten maakt om te sorteren op de datum en vervolgens de gesorteerde lijst doorgeven aan de verbruikende assembly. Bedankt voor de info!
toegevoegd de auteur Halcyon, de bron

Ik heb geverifieerd dat uw zoekopdracht werkt in .NET 4.0. Mist u een verwijzing naar Microsoft.CSharp van uw vergadering?

3
toegevoegd