我的代码:
var Result = from TempRow in ArrAbsDiff
where TempRow.Strike == StrikeOfMinAbsDiff
select TempRow.PutMidPrice;
我知道上面的代码只返回一个十进制类型的值(也许是double)。但是,结果属于Enumerable
类型,我无法轻易编写Result + 2
。我需要转换它的属性。我可以通过以下代码完成:
var Result = (from TempRow in ArrAbsDiff
where TempRow.Strike == StrikeOfMinAbsDiff
select TempRow.PutMidPrice).Min();
有更有效的方法来实现它吗?
此致
答案 0 :(得分:2)
我知道上面的代码只返回一个十进制值
的值
然后使用First
的{{1}}方法实例。
答案 1 :(得分:2)
在编译时,不知道您的查询是返回1条记录还是超过1条记录。因此,它假定了它们的列表。
我不知道它们之间是否存在性能差异,我通常使用.Single()来获取单个记录。更清楚的是,我想要一个记录,而不是,例如,最小的记录。
答案 2 :(得分:1)
尝试使用FirstOrDefault()“这会选择返回的第一个结果(因为你知道只会返回一个值)。如果没有返回值,Result将为null,在if语句中捕获它,如下所示:
var Result = (from TempRow in ArrAbsDiff
where TempRow.Strike == StrikeOfMinAbsDiff
select TempRow.PutMidPrice).FirstOrDefault();
if (Result == null)
return; // or error message
这也将保留返回值的类型 (键入我的头顶,可能需要稍作修改!)