从同一类中的List返回单个对象的属性

时间:2013-08-29 03:59:13

标签: c# entity-framework

我有一个List<>保存记录的状态历史记录。我想要包含一个属性,该属性将从该列表中返回最新状态。

问题是从类中访问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中这样做,但想知道是否可以让班级做这项工作。

3 个答案:

答案 0 :(得分:1)

您可以OrderByDescending获得第一项:

return CourseStatusList.OrderByDescending(s => s.InsertDate)
                       .FirstOrDefault();

答案 1 :(得分:1)

添加对

的引用
using System.Linq;

然后

var maxInsertDate =  CourseStatusList.Max(y => y.InsertDate);
return CourseStatusList.FirstOrDefault(x => x.InsertDate== maxInsertDate);

答案 2 :(得分:1)

您需要选择要排序的属性并将其作为lambda表达式传递给OrderByDescending

像:

using System.Linq;

    return CourseStatusList.OrderByDescending(s => s.InsertDate)
                           .FirstOrDefault();

也可以参考此链接

LInq Order By and Order By Desc