我有一个匹配对象列表:
IEnumerable<Match> matches
匹配看起来像这样
public class Match
{
[JsonProperty("_id")]
public string Id { get; set; }
[JsonProperty("last_activity_date")]
public string LastActivityDate { get; set; }
[JsonProperty("messages")]
public MatchMessage[] Messages { get; set; }
}
我的 MatchMessage 类如下所示:
public class MatchMessage
{
[JsonProperty("_id")]
public string Id { get; set; }
[JsonProperty("message")]
public string Message { get; set; }
[JsonProperty("sent_date")]
public string SentDate { get; set; }
}
现在,我想按 MatchMessage 中的 SentDate 属性对我的匹配项列表进行排序,我很难弄清楚这一点。
我试过:
var newList = matchList.OrderBy(match => match.Messages.OrderBy(x => x.SentDate));
但是当我这样做时出现错误。我已经用谷歌搜索了一段时间,但找不到解决方案。我该怎么做?
最佳答案
这将按每个匹配项的最新消息升序对 matchList
进行排序。
var newList = matchList.OrderBy(
match =>
match.Messages.Any()
? match.Messages.Max(x => DateTime.Parse(x.SentDate))
: DateTime.MaxValue);
注意:给定的 SentDate 是正确的 DateTime 格式。
关于c# 根据对象的属性对对象列表进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35108004/