public class Object1
{
public List<Object2> Logs { get; set; }
}
public class Object2
{
DateTime aDate { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
现在我要做的是设置a的顺序
List<Object1>
Run Code Online (Sandbox Code Playgroud)
根据Object1.Logs中最新的Object2项.我怎样才能用lambda的速记来做到这一点?
如果您想按升序排序列表,那么您可以从内部列表中选择最小日期,然后将其用于OrderBy:
var orderedQuery = list.OrderBy(r => r.Logs
.Min(t => t.aDate));
Run Code Online (Sandbox Code Playgroud)
只要确保你的财产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);
Run Code Online (Sandbox Code Playgroud)