使用 Linq C# 获取元组对象列表中的最新日期对象
Posted
技术标签:
【中文标题】使用 Linq C# 获取元组对象列表中的最新日期对象【英文标题】:Get the Latest date object in List of Tuples objects using Linq C# 【发布时间】:2021-10-10 14:10:53 【问题描述】:我有一个示例代码和 我需要根据最新日期获取对象/记录请帮帮我
示例代码示例:
List<Tuple<string, string, DateTime>> LtTable = new List<Tuple<string, string, DateTime>>();
LtTable.Add(new Tuple<string, string,DateTime>("test1", "test11", Convert.ToDateTime("1/1/2021"));
LtTable.Add(new Tuple<string, string,DateTime>("test2", "test22", Convert.ToDateTime("2/1/2021"));
LtTable.Add(new Tuple<string, string,DateTime>("test3", "test33", Convert.ToDateTime("3/2/2021"));
LtTable.Add(new Tuple<string, string,DateTime>("test4", "test44", Convert.ToDateTime("7/7/2021"));
尝试的代码:
Tuple<string,string,DateTime> tuple1 = LtTable.Select(c=>new Tuple<string,string,DateTime>(c.item1,c.item2,c.item3)).Where(r => r.Item3 != new DateTime())
.Max(r => r.Item3)
所需的输出:我想要作为元组 Obj 的输出是最新的日期,即“test4”、“test44”、7/7/2021 12:00:00 AM
【问题讨论】:
请先使用 Where(r => r.Item3 != new DateTime()),然后使用 OrderByDesc(d=>d.Item3),然后尝试 FirstOrDefault() 帮自己一个忙,切换到ValueTuple
,你不需要new ValueTuple
你可以这样声明(item1, item2)
【参考方案1】:
您可以先对列表进行排序,然后获取第一个元素:
var tupleWithMaxDate = LtTable.OrderByDescending(x => x.Item3).FirstOrDefault();
在线演示:https://dotnetfiddle.net/LHwgPd
【讨论】:
【参考方案2】:请使用此代码
var result = LtTable.Where(r => r.Item3 != new DateTime()). OrderByDescending(d => d.Item3).FirstOrDefault();
【讨论】:
以上是关于使用 Linq C# 获取元组对象列表中的最新日期对象的主要内容,如果未能解决你的问题,请参考以下文章
在 C# 代码中的 DB 中的 Linq 查询中包含空单元格
使用 LINQ 根据 C# 中的属性值搜索嵌套在另一个列表中的列表中的项目?