按对象的 object.property lambda 对列表中的项目进行排序
本文关键字:项目 排序 列表 对象 object property lambda | 更新日期: 2023-09-27 18:31:39
public class Object1
{
public List<Object2> Logs { get; set; }
}
public class Object2
{
DateTime aDate { get; set; }
}
现在我正在尝试做的是设置一个
List<Object1>
根据 Object1.Logs 中最新的 Object2 项。如何使用 lambda 速记正确地做到这一点?
如果要按升序对列表进行排序,则可以从内部列表中选择最小日期,然后在OrderBy
中使用它,例如:
var orderedQuery = list.OrderBy(r => r.Logs
.Min(t => t.aDate));
只要确保使你的属性aDate
public
,否则它将在类外不可见。
如果您希望首先获取最新值,则需要Max
而不是Min
从内部列表中选择最新日期,如果需要该特定顺序,请使用OrderByDescending
。
您还可以添加检查以检查Empty
并在以下行null
某些内容:
var orderedQuery = list.OrderBy(r => (r.Logs != null && r.Logs.Any()) ?
r.Logs.Max(t => t.aDate)
: DateTime.MinValue);
var list = new List<Object1>();
/* add your Object1 objects here */
list = list.OrderByDescending(c => c.Logs.Max(d => d.aDate)).ToList();