Это мой код:C# - Не удалось сравнить два элемента в массиве
var distinctDateValues = dt.AsEnumerable()
.Select(row => new
{
Date = DateTime.Parse(row.Field<string>("DAY"))
})
.Distinct()
.ToList();
distinctDateValues.Sort(); // getting error on this line
Значения в distinctDateValues являются:
Ошибка я получаю «Не удалось сравнить два элементов в массиве ".
Может кто-нибудь предложить мне, как я здесь делаю неправильно. Я хочу сортировать значения в столбце date для defineDateValues.
Вам действительно нужно перечисление анонимных объектов только с одним полем ('Date')? Вы можете просто поместить значения 'DateTime' в ваше перечисление напрямую. –
Почему не 'OrderBy' с Linq? –
Чтобы выполнить 'Сортировка' в' List ', каждый раз, когда у вас есть два элемента из списка, алгоритм должен иметь возможность определить, какой из них больше другого. Это требует, чтобы (один из двух) объектов реализовал «IComparable», «IComparable » или аналогичный. Вы используете анонимный тип, потому что используйте 'new {Date = xxx}'. В то время как анонимные типы переопределяют 'Equals' и' GetHashCode', они не реализуют 'IComparable' или аналогичные. Поэтому вы можете сказать, что два экземпляра анонимного типа равны или нет, но вы не можете сказать, является ли он «больше, чем» другим! –