C# 在类列表中对字符串DateAndTime值进行排序
我使用的类具有类型为string的属性DateAndTime。我已经创建了一个此类的列表,并尝试按照日期降序排列该列表。但我的问题是如何对DateAndTime排序,因为它是字符串格式的C# 在类列表中对字符串DateAndTime值进行排序,c#,C#,我使用的类具有类型为string的属性DateAndTime。我已经创建了一个此类的列表,并尝试按照日期降序排列该列表。但我的问题是如何对DateAndTime排序,因为它是字符串格式的 var DateTimeSortedRecords = ProductList(d => new { d.dt.Date, d.CreatedDate.Month, d.CreatedDate.year,
var DateTimeSortedRecords = ProductList(d => new
{
d.dt.Date,
d.CreatedDate.Month,
d.CreatedDate.year,
})
.OrderByDescending(d => d.Year)
.ThenByDescending(d => d.Month)
.ThenByDescending(d => d.Date).ToList();
------------资料------------------
2015年10月1日星期一05:50:06
2018年12月29日星期五05:50:06
2015年10月9日星期一05:50:06
2011年12月29日星期五05:50:06
2015年5月29日星期五05:50:06
------------输出我想要的---------------
2018年12月29日星期五05:50:06
2015年10月9日星期一05:50:06
2015年10月1日星期一05:50:06
2015年5月29日星期五05:50:06
2011年12月29日星期五05:50:06您可以通过以下方式实现这一点:
var日期=新列表
{
新日期时间(2000年10月10日),
新日期时间(2010年10月10日)
};
var sortedDates=dates.OrderByDescending(x=>x)。选择(x=>x.ToString(“dddd,dd-MMMM-yyyy-hh:mm:ss”);
foreach(分类数据中的var项目)
{
控制台写入线(项目);
}
如果您只需要输出,而不关心已排序的
DateTime
对象本身,那么这就是您所需要的一切。我已经实现了我想要的输出,但我认为我的逻辑没有优化
//get all string dates from product list
var GetDates = ProductList.Select(m => m.CreatedDate).ToList();
//create DateTime list to convert the string dates to DateTime Formate
List<DateTime> dt = new List<DateTime>();
foreach (var item in GetDates)
{
dt.Add(Convert.ToDateTime(item));
}
//sort the DateTime "dt" list
var SortedDatesList = dt.OrderByDescending(x => x)
.Select(x => x.ToString("dd-MMM-yyyy"));
//Create a list of Class Product , and add products according to sorted dates
List<Product> _NewProducts = new List<Product>();
foreach (var item in SortedDatesList)
{
_NewProducts.Add(ProductList.Where(m=>m.CreatedDate == item).FirstOrDefault());
}
//从产品列表中获取所有字符串日期
var GetDates=ProductList.Select(m=>m.CreatedDate.ToList();
//创建DateTime列表以将字符串日期转换为DateTime格式
List dt=新列表();
foreach(GetDates中的var项)
{
dt.Add(转换为ToDateTime(项目));
}
//对日期时间“dt”列表进行排序
var SortedDatesList=dt.OrderByDescending(x=>x)
.选择(x=>x.ToString(“dd-MMM-yyyy”);
//创建类别产品列表,并根据排序日期添加产品
列表_NewProducts=新列表();
foreach(分类列表中的var项目)
{
_Add(ProductList.Where(m=>m.CreatedDate==item).FirstOrDefault());
}
最好将字符串转换为DateTime,然后执行排序操作您好,您的答案对我很有用,非常感谢。。我不擅长linq查询。。你能看看我下面的代码吗。我已经实现了我的期望输出,但我认为我的逻辑没有得到优化。。我已经发布了一个答案,你能检查一下吗?