ฉันมีวิธีการที่ส่งคืน List<IDictionary<string,object>>
ออบเจ็กต์สำหรับพจนานุกรมถูกสร้างขึ้นโดยใช้ 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";
จากสิ่งที่วิธีการส่งคืน ฉันต้องเลือกค่าที่แตกต่างกันของ "คุณสมบัติ DateTime 1" แต่สำหรับส่วนของวันที่เท่านั้น ดังนั้นฉันจึงพยายามทำสิ่งต่อไปนี้:
var unique = GetData().Select(s => s["DateTime Property 1"].ToShortDateString()).Distinct();
แต่มันบอกว่าไม่มีวิธีการเช่น ToShortDateString()
:
IEnumerable' ไม่มีคำจำกัดความสำหรับ 'ToShortDateString' และไม่มีวิธีการขยาย 'ToShortDateString' ที่ยอมรับอาร์กิวเมนต์แรกของประเภท 'IEnumerable'
เหตุใด object
ในพจนานุกรมจึงไม่แปลงเป็นประเภท DateTime
โดยอัตโนมัติเมื่อคุณสมบัติถูกกำหนดค่า DateTime
เมื่อฉันใช้ dynamic
ทุกที่แทนที่จะเป็น object
ทุกอย่างทำงานได้ดี
ฉันจะทำให้มันทำงานได้อย่างไรเมื่อใช้ object