List<IDictionary<string,object>>
を返すメソッドがあります。リストから別のDateTimeプロパティを選択する<IDictionary <string、object >> LINQを使用
辞書のオブジェクトはExpandoObject
を使用して作成され、foreachループでリストに追加されます。ここでは、そのようなオブジェクトの例である:どのようなメソッドが返すから
var dataItem = new ExpandoObject() as IDictionary<string, object>;
dataItem["String Property 1"] = "String Value 1";
dataItem["String Property 2"] = "String Value 2";
dataItem["DateTime Property 1"] = "DateTime Value 1";
dataItem["DateTime Property 2"] = "DateTime Value 2";
、私はそれだけの日付の部分について、「日時プロパティ1」の異なる値を選択する必要があります。
var unique = GetData().Select(s => s["DateTime Property 1"].ToShortDateString()).Distinct();
しかし、それはToShortDateString()
としてはそのような方法が存在しないことを言う::だから、私は、次の操作を実行しようとしている
はなぜ辞書にIEnumerableをToShortDateString 『」 の定義が含まれていない』となし拡張メソッド 'ToShortDateString' 'IEnumerable'タイプの最初の引数を受け入れることができます が見つかりました。
object
は、プロパティが
DateTime
値が代入されたときに自動的に
DateTime
型に変換されていませんか?
object
の代わりにどこでも
dynamic
を使用すると、すべて正常に動作します。
object
を使用するとどうすればよいですか?
はい、 "日時プロパティ1" の結果を解析し、あなたが
ToString
を呼び出すことができます代わりにキャストすることができ、
DateTime
ですタイプは「DateTime」です。これは、上記のメソッド内の 'DateTimeOffset.Parse(JTokenValue.ToString())。DateTime'によって計算されます。 'DateTime'をキャストしようとしても役に立たなかった:' ToShortDateString() 'メソッドが見つからないというエラーは依然として残っています。 'ToShortDateString()'の前に 'ToString()'を呼び出すと動作しません。 'ToShortDateString()'は 'string'ではなく' DateTime'を引数として想定しています。 – YMM「DateTime」にキャストするために使用したコードを含めることができますか? – KMoussa
'var unique = GetData().Var unique = GetData()。選択(s =>(DateTime)s [" DateTimeプロパティ1 "] ToShortDateString())Distinct();' – YMM