public class Object1
{
public List<Object2> Logs { get; set; }
}
public class Object2
{
DateTime aDate { get; set; }
}
现在我要做的是设置
的顺序List<Object1>
根据Object1.Logs中最新的Object2项。 我怎样才能以lambda的简写方式正确地做到这一点?
答案 0 :(得分:6)
如果您想按升序排序列表,则可以从内部列表中选择最小日期,然后在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);
答案 1 :(得分:0)
var list = new List<Object1>();
/* add your Object1 objects here */
list = list.OrderByDescending(c => c.Logs.Max(d => d.aDate)).ToList();