У меня есть метод, который возвращает List<IDictionary<string,object>>
.Выберите различные свойства DateTime из списка <IDictionary <string, object >> using 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";
Из того, что возвращает метод, мне нужно, чтобы выбрать различные значения «DateTime свойства 1», но только на дату его части. Таким образом, я пытаюсь сделать следующее:
var unique = GetData().Select(s => s["DateTime Property 1"].ToShortDateString()).Distinct();
Но он говорит, что не существует такой метод, как ToShortDateString()
:
IEnumerable»не содержит определения для „ToShortDateString“и нет метод расширения 'ToShortDateString' Принятие первого аргумента типа «IEnumerable» может быть найдено .
Почему object
в словаре не преобразуется в DateTime
типа автоматически, когда свойство присваивается значение DateTime
? Когда я использую dynamic
везде, а не object
, все работает отлично.
Как это сделать, если используется object
?
Да, "DateTime Property 1" имеет тип 'DateTime'. Он вычисляется 'DateTimeOffset.Parse (JTokenValue.ToString()). DateTime' в рамках метода, упомянутого выше. Попытка использовать 'DateTime' не помогла: ошибка в методе' ToShortDateString() 'по-прежнему сохраняется. Вызов 'ToString()' перед 'ToShortDateString()' не работает как 'ToShortDateString()' ожидает 'DateTime' как аргумент, а не' string' (появляется ошибка об этом). – YMM
можете ли вы включить код, который вы использовали для перевода в 'DateTime'? – KMoussa
'var unique = GetData(). Выберите (s => (DateTime) s [" Свойство DateTime 1 "]. ToShortDateString()). Distinct();' – YMM