Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/319.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# 如何通过最高Id在列表中获取值?_C#_List - Fatal编程技术网

C# 如何通过最高Id在列表中获取值?

C# 如何通过最高Id在列表中获取值?,c#,list,C#,List,如何在IdDate之前获得RSI_值? 我对我的rsi_Wilder进行排序,所以最高的IdDate总是最后一个索引。因此,我可以这样做: class RSI { public int IdDate { get; set; } public decimal RSI_Value { get; set; } } List<Datamodel.RSI> rsi_Wilder = BeregnRsi_Wilder(idVirksomhedensStamdata, Bereg

如何在IdDate之前获得RSI_值? 我对我的rsi_Wilder进行排序,所以最高的IdDate总是最后一个索引。因此,我可以这样做:

class RSI
{
    public int IdDate { get; set; }
    public decimal RSI_Value { get; set; }
}

List<Datamodel.RSI> rsi_Wilder = BeregnRsi_Wilder(idVirksomhedensStamdata, BeregnAntalDage: 21);
var lastValue = rsi_Wilder[rsi_Wilder.Count - 1].RSI_Value;
我需要得到具有最高IdDate的RSI_值,但我不知道IdDate编号。我寻求的结果是RSI_值=55。
代码var lastValue=rsi_-Wilder[rsi_-Wilder.Count-1].rsi_-Value;做好这项工作,因为rsi_Wilder中的IdDate是从最低到最高排序的。

在*logn上订购整个序列的成本,如果您想要的只是收集的最大值,那么实际上并不需要它

decimal rsiValueOfHighestId =
    rsi_Wilder.OrderByDescending(rsi => rsi.IdDate).First().RSI_Value;
只需在序列上迭代并跟踪遇到的最大元素,就可以找到最大值。您甚至可以创建一个扩展方法来为您执行此操作,或者仅使用LINQ执行此操作:

var result = yourcollection.Aggregate((x,y) => x.IdDate > y.IdDate ? x : y);

您可以在*logn上找到更多的示例

订购整个序列的成本,如果您想要的只是收集的最大值,那么就不需要了

只需在序列上迭代并跟踪遇到的最大元素,就可以找到最大值。您甚至可以创建一个扩展方法来为您执行此操作,或者仅使用LINQ执行此操作:

var result = yourcollection.Aggregate((x,y) => x.IdDate > y.IdDate ? x : y);

您可以找到更多的示例

您的意思是,如果Beregnorsi_Wilder碰巧以相反或未排序的顺序返回结果,您如何获得最高值?更好的方式是否意味着更好的性能?您是否订购了rsi_Wilder?也许您可以使用不同的数据结构以获得更好的性能。例如,SortedList或SortedSet取决于应用程序的需要。你是说?var max=rsi_Wilder.Maxrsi=>rsi.rsi_值??Title的列表有误导性……你的意思是,如果BeregnRsi_Wilder碰巧以相反或未排序的顺序返回结果,你怎么能获得最高值?更好的方式意味着更好的性能?您是否订购了rsi_Wilder?也许您可以使用不同的数据结构以获得更好的性能。例如,SortedList或SortedSet取决于应用程序的需要。你是说?var max=rsi_Wilder.Maxrsi=>rsi.rsi_值??标题的列表是误导性的…我正要发布一个类似的答案,因为这将是最有效的。向上投票!即将发布类似于此的答案,因为这将是最有效的。向上投票!根据他的描述,他希望在IdDate之前获得最大RSI_值;这只是返回最大RSI_值。我不能使用RSI_Wilder.Maxx=>x.RSI_值;它应该类似于rsi_Wilder.Maxx=>x.Id_Date.selectx=>x.rsi_值;当然,这是行不通的。根据他的描述,他希望在IdDate之前得到最大RSI_值;这只是返回最大RSI_值。我不能使用RSI_Wilder.Maxx=>x.RSI_值;它应该类似于rsi_Wilder.Maxx=>x.Id_Date.selectx=>x.rsi_值;当然,这是行不通的。
using System.Linq;

var lastValue = rsi_Wilder.Max(x => x.RSI_Value);