C# 通过LINQ查询获取日期时间最短的行
用户有一个C# 通过LINQ查询获取日期时间最短的行,c#,linq,entity-framework,C#,Linq,Entity Framework,用户有一个列表CallToMake每个调用都有一个属性日期时间戳 我试着打一个电话,时间最早(分钟)。我看到过一些示例,展示了如何获取min时间戳,但我不知道如何使用min时间戳获取调用 我不知道在这里添加什么:user.CallsToMake.Where(call=>call.TimeStamp)按TimeStamp对调用进行排序,然后选择第一个: Call firstCall = user.CallsToMake.OrderBy(i => i.TimeStamp).FirstOrDef
列表CallToMake
每个调用都有一个属性日期时间戳
我试着打一个电话
,时间最早(分钟)。我看到过一些示例,展示了如何获取min时间戳
,但我不知道如何使用min时间戳
获取调用
我不知道在这里添加什么:
user.CallsToMake.Where(call=>call.TimeStamp)
按TimeStamp
对调用进行排序,然后选择第一个:
Call firstCall = user.CallsToMake.OrderBy(i => i.TimeStamp).FirstOrDefault();
您还可以使用聚合
获得所需的值,而无需排序:
Call firstCall = user
.CallsToMake
.Aggregate((min, current) =>
(current.TimeStamp < min.TimeStamp ? current : min)
);
callfirstcall=user
卡拉戈梅克先生
.聚合((最小值,当前值)=>
(current.TimeStamp
@huMptyduMpty:不需要对整个集合进行排序,只需获得最小值的项即可。你可以一次完成。@JonSkeet:当然,我没想到。谢谢@JonSkeet我没有可用的MinBy
方法,只能Min
返回最小值,该最小值是DateTime
而不是行。@Yoda:链接问题中的答案指的是第三方代码Morelink。我已经更新了答案中的链接,现在指向了一个有效的页面。你可以使用他们的库,也可以复制粘贴他们的代码(如果你想复制,你需要检查许可证是否合适)。我试图避免orderBy,因为我担心它会先调用排序,这可能需要时间。排序是nlogn,查找最小值是n。我添加了一个解决方案,该解决方案不使用排序,工作复杂度为O(n)。