gpt4 book ai didi

c# - 从 List 中查找最大值

转载 作者:太空狗 更新时间:2023-10-30 00:05:21 25 4
gpt4 key购买 nike

我定义了许多对象,每个对象都有一个名为“CreateDate”的属性。

是否可以编写一个单一的通用方法来从我指定的对象中选择最晚日期?

我试图对此使用通用方法,但当我尝试指定属性名称时编译器不喜欢它。

我一直在努力实现这些目标......

private static DateTime GetLastDate<T>(List<T> data)
{
// Unfortunately, this is not allowed...
return
(from d in data
orderby d.CreateDate
select d.CreateDate).FirstOrDefault();
}

最佳答案

最好的方法是创建一个具有特定功能的接口(interface),并让所有类实现该接口(interface):

public interface ICreated
{
public DateTime CreateDate {get;}
}

然后您可以确保接受的所有项目都实现了该接口(interface):

private static DateTime GetLastDate<T>(IEnumerable<T> input) where T : ICreated
{
return input.Max(d=>d.CreateDate);
}

如果这真的不是一个选项(可能是因为您不能修改类以使其实现接口(interface)或集合来包装底层类型),您可以使用dynamic。我非常不鼓励您这样做,因为它确实不是好的设计,它会慢得多,而且很容易损坏,但它可以工作:

private static DateTime GetLastDate(IEnumerable<dynamic> input)
{
return input.Max(d=>d.CreateDate);
}

关于c# - 从 List<T> 中查找最大值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13240254/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com