就以下面的列表举个小例子吧:
List<T> epList = new List<T>();
方法1:
试了Max()取最大值的方法,但是方法返回的是一个特定的值,而不是对应的一条记录;有些不方便,当然也是可以如下方法实现:
//取出最大值
var maxValue = epList.Max(x => x.value);
//从列表中匹配值等于最大值的第一项
T item = epList .Where(x => x.value == maxValue ).FirstOrDefault();
方法2:
可以换个思路,按数值对列表进行倒序(OrderByDescending()),取倒叙后的第一条记录:
T item = epList.OrderByDescending(x => x.value).FirstOrDefault()
namespace 遍历集合中的时间最大值
{
public class Program
{
static void Main(string[] args)
{
List<Diagist> lisd = new List<Diagist>() {
new Diagist{VisitNumber=1001,CureNO=101,AdmitDiagnosis="惊恐发作,芷良性肿瘤",DischargeDiag="头痛",DiagnoseDateTime=DateTime.Now },
new Diagist{VisitNumber=1002,CureNO=102,AdmitDiagnosis="惊恐发作,芷良性肿瘤",DischargeDiag="头痛",DiagnoseDateTime=Convert.ToDateTime("2021-5-22") },
new Diagist{VisitNumber=1003,CureNO=103,AdmitDiagnosis="惊恐发作,芷良性肿瘤",DischargeDiag="头痛",DiagnoseDateTime=DateTime.Now },
new Diagist{VisitNumber=1004,CureNO=104,AdmitDiagnosis="惊恐发作,芷良性肿瘤",DischargeDiag="头痛",DiagnoseDateTime=DateTime.Now }
};
//var maxValue = lisd.Max(x => x.DiagnoseDateTime);
//Diagist item = lisd.Where(x => x.DiagnoseDateTime == maxValue).FirstOrDefault();
//Console.WriteLine(item.CureNO);
Diagist item = lisd.OrderByDescending(x => x.DiagnoseDateTime).FirstOrDefault();
Console.WriteLine(item.CureNO);
Console.ReadKey();
}
}
public class Diagist
{
public int VisitNumber { get; set; }
public int CureNO { get; set; }
public string AdmitDiagnosis { get; set; }
public string DischargeDiag { get; set; }
public DateTime DiagnoseDateTime { get; set; }
}