2011-12-06 9 views
7

動的なオブジェクトを保持するリストがあります。 LINQ OrderByメソッドを使用すると、 'object'に 'Date'の定義が含まれていないというエラーが表示されます。私のリストを日付順にソートするにはどうすればいいですか?動的オブジェクトでリストをソートする方法

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

反射がありますか? – Nate

+0

ラムダ式がダイナミクスをサポートしていないと言っていますか? – zmbq

+0

LinqPadでは、実行され、うまく動作します。 – okrumnow

答えて

6

同じアセンブリに表示されているコードはありますか?

匿名型は、アセンブリ全体に動作しません、エラーASP.net 2つの異なるアセンブリ

(例えば、から匿名型を使用しての典型的な兆候である「オブジェクトはこの定義が含まれていません」 MVCページでコントローラがモデルとして匿名型を返す可能性があります。ビューはそれを使用しようとする可能性があります=>そのエラーで吹き飛ばされます)

+0

実際、コードは別のアセンブリにあります。投稿したコードは一例です。アセンブリ全体で動作しないことが分かっているので、動的オブジェクトのリストを作成するコードを変更して、日付でソートしてからソートされたリストを消費アセンブリに渡すことができました。情報をありがとう! – Halcyon

+0

@Halcyon Cool。問題は、anon型は内部型であるということです。動的にそれらをラップするハックがいくつかありますが、それらはアセンブリ全体で作業することができますが、実際にはソリューションを再構築する方がよいでしょう。 –

3

クエリが.NET 4.0で機能することを確認しました。あなたのアセンブリからMicrosoft.CSharpへの参照がありませんか?

関連する問題