Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/262.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# 是否根据对象属性从列表中查找最新记录?_C#_Linq - Fatal编程技术网

C# 是否根据对象属性从列表中查找最新记录?

C# 是否根据对象属性从列表中查找最新记录?,c#,linq,C#,Linq,我有一个类测试的列表 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 = n

我有一个类
测试的列表

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 });
所以第四条记录是基于创建日期的最新记录,所以我们如何才能找到第四条记录
谢谢

您可以按日期对列表进行排序,并使用LINQ获取记录:

var latest = lstTest.OrderByDescending(x => x.ModifiedDate ?? x.CreatedDate).First();

您可以按日期对列表进行排序,并使用LINQ获取记录:

var latest = lstTest.OrderByDescending(x => x.ModifiedDate ?? x.CreatedDate).First();

您可以使用LINQ
OrderBy
按日期排序(最早的第一个),然后使用
LastOrDefault
获取最后一个条目(如果集合不包含条目,则为null)

使用空合并运算符
??
处理ModifiedDate的任何空值,在本例中使用CreationDate进行比较

Test lastEntry = lstTest
    .OrderBy(t => t.ModifiedDate ??  t.CreatedDate)
    .LastOrDefault();

您可以使用LINQ
OrderBy
按日期排序(最早的第一个),然后使用
LastOrDefault
获取最后一个条目(如果集合不包含条目,则为null)

使用空合并运算符
??
处理ModifiedDate的任何空值,在本例中使用CreationDate进行比较

Test lastEntry = lstTest
    .OrderBy(t => t.ModifiedDate ??  t.CreatedDate)
    .LastOrDefault();

试试这个。。。然后你可以找到最新的记录

var latestRecord = lstTest.OrderByDescending(x => x.ModifiedDate ?? x.CreatedDate).FirstOrDefault();

试试这个。。。然后你可以找到最新的记录

var latestRecord = lstTest.OrderByDescending(x => x.ModifiedDate ?? x.CreatedDate).FirstOrDefault();

您可以尝试以下代码:

var latestrecord=lstest.OrderByDescending(t=>t.ModifiedDate)
.FirstOrDefault()

您可以尝试以下代码:

var latestrecord=lstest.OrderByDescending(t=>t.ModifiedDate)
.FirstOrDefault()

Hi@fabjan有可能修改的日期为空,当修改的日期为空时,则需要查看创建的日期date@JasminSolanki更新了my answerHi@fabjan,修改日期可能为空,当修改日期为空时,则需要查看已创建的date@JasminSolanki更新了我的回答“最新更新,因为其修改日期是最新的”。因此,按ModifiedDateAsking订购“最新更新,因为其修改日期是最新的。”“.So order by modifieddate虽然这可能回答了作者的问题,但它缺少一些解释性的词语和指向文档的链接。如果没有一些短语,原始代码片段就没有多大帮助。你也会发现这很有帮助。请编辑您的答案。虽然这可能会回答作者的问题,但它缺少一些解释文字和文档链接。如果没有一些短语,原始代码片段就没有多大帮助。你也会发现这很有帮助。请编辑您的答案。