我有一个Test
类的列表
public class Test
{
public int Id { get; set; }
public string Name { get; set; }
public DateTime CreatedDate { get; set; }
public DateTime? ModifiedDate { get; set; }
}
列表中包含以下数据
List<Test> lstTest = new List<Test>();
lstTest.Add(new Test() { Id = 1, Name = "Test 1", CreatedDate = Convert.ToDateTime("05/05/2005"), ModifiedDate = Convert.ToDateTime("09/05/2005") });
lstTest.Add(new Test() { Id = 2, Name = "Test 2", CreatedDate = Convert.ToDateTime("06/05/2005"), ModifiedDate = Convert.ToDateTime("07/05/2005") });
lstTest.Add(new Test() { Id = 3, Name = "Test 3", CreatedDate = Convert.ToDateTime("08/05/2005"), ModifiedDate = null });
现在我想找到一条最近更新的记录,例如Test
列表中的3条记录,第一个记录是最新更新的,因为它的修改日期是最新的,我怎么找到它?
现在让我们改变情景
lstTest.Add(new Test() { Id = 4, Name = "Test 4", CreatedDate = Convert.ToDateTime("10/05/2005"), ModifiedDate = null });
因此第4条记录是基于创建日期的最新记录,因此我们如何查找第4条记录 谢谢
答案 0 :(得分:3)
好吧,您可以按日期对列表进行排序,然后使用LINQ获取记录:
var latest = lstTest.OrderByDescending(x => x.ModifiedDate ?? x.CreatedDate).First();
答案 1 :(得分:0)
您可以使用LINQ OrderBy
按日期排序(最旧的),然后使用LastOrDefault
获取最后一个条目(如果集合不包含任何条目,则为null)。
使用空合并运算符??
处理ModifiedDate的任何空值,并在这种情况下使用CreationDate进行比较。
Test lastEntry = lstTest
.OrderBy(t => t.ModifiedDate ?? t.CreatedDate)
.LastOrDefault();
答案 2 :(得分:0)
尝试一下……然后您可以找到最新记录。
var latestRecord = lstTest.OrderByDescending(x => x.ModifiedDate ?? x.CreatedDate).FirstOrDefault();
答案 3 :(得分:0)
您可以尝试以下代码:
var Latestrecord = lstTest.OrderByDescending(t => t.ModifiedDate) .FirstOrDefault();