Saya memiliki metode yang mengembalikan List<IDictionary<string,object>>
.
Objek untuk kamus dibuat menggunakan ExpandoObject
dan kemudian ditambahkan ke daftar dengan loop foreach. Berikut adalah contoh objek tersebut:
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";
Dari apa yang dikembalikan oleh metode ini, saya perlu memilih nilai berbeda dari "Properti DateTime 1", tetapi hanya untuk bagian tanggal saja. Jadi, saya mencoba melakukan hal berikut:
var unique = GetData().Select(s => s["DateTime Property 1"].ToShortDateString()).Distinct();
Namun dikatakan bahwa tidak ada metode seperti ToShortDateString()
:
IEnumerable' tidak berisi definisi untuk 'ToShortDateString' dan tidak ada metode ekstensi 'ToShortDateString' yang menerima argumen pertama bertipe 'IEnumerable' yang dapat ditemukan.
Mengapa object
dalam kamus tidak dikonversi ke tipe DateTime
secara otomatis ketika properti diberi nilai DateTime
? Saat saya menggunakan dynamic
di mana saja, bukan object
, semuanya berfungsi dengan baik.
Bagaimana cara membuatnya berfungsi saat menggunakan object
?