Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/295.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在类列表中对字符串DateAndTime值进行排序_C# - Fatal编程技术网

C# 在类列表中对字符串DateAndTime值进行排序

C# 在类列表中对字符串DateAndTime值进行排序,c#,C#,我使用的类具有类型为string的属性DateAndTime。我已经创建了一个此类的列表,并尝试按照日期降序排列该列表。但我的问题是如何对DateAndTime排序,因为它是字符串格式的 var DateTimeSortedRecords = ProductList(d => new { d.dt.Date, d.CreatedDate.Month, d.CreatedDate.year,

我使用的类具有类型为string的属性DateAndTime。我已经创建了一个此类的列表,并尝试按照日期降序排列该列表。但我的问题是如何对DateAndTime排序,因为它是字符串格式的

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查询。。你能看看我下面的代码吗。我已经实现了我的期望输出,但我认为我的逻辑没有得到优化。。我已经发布了一个答案,你能检查一下吗?