使用 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# 中的属性值搜索嵌套在另一个列表中的列表中的项目?

使用 LINQ 获取列表中的所有对

使用 LINQ 获取列表中的所有对

如何从 C# 中的元组列表中获取最接近“a”的 4 个元素?

如何解决 C# 中 linq 的 lambda 表达式中的对象引用错误?