Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/273.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 通过LINQ查询获取日期时间最短的行_C#_Linq_Entity Framework - Fatal编程技术网

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)。