1

私が以下のコードを持っているとしましょう:

dynamic myData = GetMyData();
foreach(dynamic d in myData.data)
{
   Console.WriteLine(d.name);
}

すべての名前をアルファベット順に書き出すにはどうすればよいですか?私が使用するようなものを使用している場合List<MyClass>myData.OrderBy(t => t.name)これは動的タイプを使用している場合は機能しないようです。

これらの値を注文する方法について何か提案はありますか?

4

2 に答える 2

7
Enumerable.OrderBy(myData, (Func<dynamic, dynamic>)(t => t.name));

myData.OrderBy(t => t.name)通常と同じように返されます。

は拡張メソッドであるためOrderBy、動的型では機能しません。この回答を参照してください。

于 2012-06-01T21:52:38.073 に答える
3

これはあなたのために働くかもしれません:

IEnumerable<dynamic> sequence = Enumerable.Cast<dynamic>(myData);
foreach (var result in sequence.OrderBy(x => x.name))
{
    Console.WriteLine(result.name);
}

基本的に、への呼び出しとへCast<dynamic>の変換の後IEnumerable<dynamic>、単一の値ではなく、シーケンスとして好きなことを行うことができます。

私が実際に上記を試したわけではありませんが、うまくいくはずです。

于 2012-06-01T21:51:03.987 に答える