我有一个列表<>保存记录的状态历史记录。我想包括一个属性,它将返回该列表中的最新状态。
问题是从类中访问List时,像.OrderByDescending这样的扩展不可用。
这里有一个例子:
public class Course
{
public int CourseID { get; set; }
public string Title { get; set; }
public virtual List<CourseStatus> CourseStatusList { get; set; }
public CourseStatus Current
{
get
{
//Return a single CourseStatus object from
//CourseStatusList with max(InsertDate)
}
}
}
public class CourseStatus
{
public int StatusID { get; set; }
public DateTime InsertDate { get; set; }
public string Description { get; set; }
public virtual Course Course { get; set; }
}
我通常在DAL中这样做,但不知道是否有可能让全班同学来做这项工作。
您需要选择一个属性进行排序,并将其作为lambda表达式传递给OrderByDescending
类似:
using System.Linq;
return CourseStatusList.OrderByDescending(s => s.InsertDate)
.FirstOrDefault();
另请参阅此链接
LInq Order By和Order By Desc
添加对的引用
using System.Linq;
然后
var maxInsertDate = CourseStatusList.Max(y => y.InsertDate);
return CourseStatusList.FirstOrDefault(x => x.InsertDate== maxInsertDate);
您可以OrderByDescending
然后获得第一项:
return CourseStatusList.OrderByDescending(s => s.InsertDate)
.FirstOrDefault();